Java基础语法
01、注释
- 为什么要写注释
- 注释为对代码的解释和说明,其目的是让人们能够更加轻松地了解代码。
- 书写注释是一个非常好的习惯
- 平时写代码一定要注意规范 (具体可以参照阿里巴巴Java开发手册)
- 注释有三种:单行注释,多行注释,文档注释
02、标识符和关键字
- 关键字
- 关键字不能作为类名,变量名以及方法名
- Java所有的组成部分都需要名字,类名,变量名以及方法名都被称为标识符
- 标识符注意点:
- 所有的标识符都应该以字母a-z,美元$,或者下划线开始
- 首字符之后可以是字母a-z,美元$,或者下划线_,或任何数字字符组合
- 不能使用相同的变量名和不能使用关键词作为变量名
- 标识符是大小敏感的
- 可以使用中文命名,但一般不建议使用,也不建议使用拼音,这样很low
03、数据类型讲解
-
数据类型
- 强类型语言:是一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。
- 弱类型语言:弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换。
-
Java的数据类型
-
分两个大类
-
基本类型
-
八大基本数据类型
// 整数
int num1 = 10;
byte num2 = 20;
short num3 = 30;
long num4 = 30L;
// 小数、浮点数
float num5 = 50.1f;
double num6 = 3.13432;
// 字符
char name = "字";
// 布尔值
boolean flag = false;
-
-
引用类型
- 类
- 接口
- 数组
-
04、数据类型扩展及面试题讲解
-
整数拓展
// 进制,二进制0b,十进制,八进制0,十六进制0x
int i = 10;
int i2 = 010;
int i3 = 0x10
-
浮点数拓展
// float 长度有限 舍入误差,大约,接近但不等于
// double 最好完全使用浮点数进行比较
// BigDecimal 数学工具类
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d); //false
float f1 = 12312312123f;
float f2 = f1 + 1;
System.out.println(d1==d2); //true
-
字符拓展
char c1 = 'A';
char c2 = "中";
System.out.println(c1); // A
System.out.println((int)c1); // 强制转换 65
System.out.println(c2); // 中
System.out.println((int)c2); // 强制转换 20013
// 所有的字符本质还是数字
// 编码 uincode 2字节,长度 0 - 65536
char c3 = '\u0061'
System.out.println(c3); // 1
//转义字符 \t 制表符 \n 换行
String sa = new String("hello");
String sb = new String("hello");
System.out.println(sa==sb); // false
String sc = "hello";
String sd = "hello";
System.out.println(sc==sd); // true
-
布尔值拓展
bolean flag = true;
if(flag == true){} //新手
if(flag){} //老手
05、类型转换
-
Java是强类型语文,有些运算需要用到类型转换
-
强制转换 ,高—>低
-
自动转换,低—>高
-
注意点:
-
不能对布尔值进行转换
-
不能把对象类型转换为不相当的类型
-
在高容量转低容量时,强制转换
-
转换时,可能存在内存溢出,或者精度丢失
int i = 128;
byte b = (byte)i; // 强制转换
// 内存溢出
System.out.println(i); // 128
System.out.println(b); // -128
// 精度丢失
System.out.println((int)23.7); // -23
System.out.println((int)-30.78f); // -30
char c = 'a';
int d = c+1;
System.out.println(d); // 98
System.out.println((char)d)); // b
// 操作比较大的数的时候,注意溢出问题
// JDK7新特性,数字之间只可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money * years;//-1474836480,计算的时候溢出
long total2 = money * years;//-1474836480,默认是int,转换之前就已经存在问题了
long total3 = money * ((long)years); //先转类型,再运算
-
06、变量、常量、作用域
-
变量
-
什么是变量:就是可以变化的量,跟解数学方程写X一样
-
Java变量是程序中的最基本存储单元
// 定义一个基本类型的变量
int a = 1;
// 定义一个引用类型的变量
String name = "jack";
public class Variable{
static int allClicks = 0;// 类变量
String str = "Hello world";// 实例变量,从属于对象,如果不初始化,有默认值 null
public void method(){
int i = 0;// 局部变量,必须声明和初始化值
}
}
-
-
常量
-
常量,初始化后不能再改变值。像奶茶店的大杯,中杯,小杯,定义了就不能改了
-
常量名一般用大写字符
// 修饰符,不分先后顺序
static final double PI = 3.14;
-
07、基本运算符
-
算术运算符:+,-,*,/ ,%,++,—
-
赋值运算符:=
-
关系运算符:>,<,>=,<=,!=
-
逻辑运算符:&&,||,!
-
位运算符: &,|,^,~ ,>>, << (与二进制相关)
-
条件运算符:? :
-
扩展赋值运算符:+=,-=,*=,/=
// 赋值运算符
int a = 10;
int b = 20;
//算术运算符
System.out.println(a+b); // 30
System.out.println(a-b); // -10
System.out.println(a*b); // 200
System.out.println(a/b); // 0 由于是int类型,会取整
// 关系运算符
System.out.println(a>b); // false
System.out.println(a<b); // true
System.out.println(a>=b); // false
System.out.println(a<=b); // true
System.out.println(a==b); // false
System.out.println(a!=b); // true
08、自增自减运算符、初识Math类
-
自增自减,一元运算符
int a = 10;
int b = a++;// 执行这段代码后,先给B赋值,再自增 b = a; a = a+1;
int c = ++a;// 执行这段代码后,再自增,先给c赋值 a = a+1;c = a;
System.out.println(a);
System.out.println(b);
System.out.println(c);
// 幂运算 2^3 2*2*2 = 8
System.out.println(Math.pow(2, 3));
09、逻辑运算符、位运算符
//逻辑运算符 与(and) 或 (or) 非 (取反)
boolean a = true;
boolean b = false;
// a && b : false 两个变量都为真,结果为 true
System.out.println("a && b : "+(a&&b));
// a || b : true 两个变量其一为真,结果为true
System.out.println("a || b : "+(a||b));
// !(a && b) : true 如果是真的,变为假,如果是假,变为真
System.out.println("!(a && b) : "+!(a&&b));
//位运算符
/*
A = 0001 1100
B = 0000 1101
--------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~B = 1111 0010
*/
>> *2
<< /2
10、三元运算符及小结
-
扩展赋值运算符
int a = 10;
int b = 20;
a+=b; // a = a + b;
a-=b; // a = a - b;
// 字符连接符 + String
System.out.println(""+a+b); // 1020
System.out.println(a+b+""); // 30
-
三元运算符
// x ? y :z
// 如果 x == true,则结果为y,否则结果为z
System.out.println(true?"是正确的":"错误的"); // 是正确的
11、包机制
- 想当于文件夹,为了更好组织文件
- 包语法格式为
package pkg1[.pkg2[.pak3...]];
- 引用包使用:import
- 导包语法格式为
import pkg1[.pkg2[.pak3...]];
12、JavaDoc生成文档
- javadoc 命令是用来生成自己API文档的
javadoc -encoding UTF-8 -charset UTF-8 文件名
- 参数信息