一、其他
1、注释
(1)单行注
(2)多行注
(3)文档注
2、标识符
(1)标识符其它部分可以是字母、下划线、美元符和数字的任意组合,数字不能开头;
(2)Java 标识符大小写敏感;
(3)java 采用 unicode 字符集,标识符可以包含汉字,但是不建议使用;
3、关键字
(1)java 里面有 goto 但是已经不使用了;
二、变量
1、变量的本质和分类
(1)变量本质
- 是一个容器,装什么和装多少是核心问题;
- 变量必须先初始化才能使用,只有静态变量会默认初始化;
(2)变量分类:局部变量 、成员变量、 静态变量
2、常量
(1)具体的数字、字符、字符串、true、false 都是常量,就是不可更改的量;
(2)变量加 final 修饰也可以转换成常量;
(3)常量通常这么写:MAX_VALUE;
3、基本数据类型
(1)三大类八小类
- 进制:二进制 0b 开头;八进制 0 开头;十六进制 0x 开头;
(2) 整型
- byte 类型的范围 -128到127
- 默认 int,long 型赋值后面要加 L;
(3)浮点型
- 默认 double,float 后面要加 F;
- 在 java 里浮点数都是不精确的,不能进行比较;
- 涉及更精确的计算,可以使用 BigInteger 和 BigDecimal;
- float 的精度只有7位,double 的精度是他的两倍;
(4)字符型
- 'a' 和 "a" 不是一样的:前者是字符,后者是字符串;
- 字符单引号中有且只能有 1 个,不能为空;
- 字符型占两个字节的原因,java 采用的是 unicode 字符集;
- String 的实质是字符序列;
(5)布尔型
- 占一位,而不是一个字节;
- 不能用0和非0来表示;
- 流程判断时,建议这么用:flag=true;if(flag){}
4、类型转换
(1)自动转换:小的转大的,不会有精度的损失;
(2)强制转换:大的转小的,可能会有精度的损失;
(3)转换问题
- 转换的特例:可以将整型常量直接赋值给 byte、 short、char 等类型变量,而不需要进行强制类型转换,只要不超出其表数范围即可;
- char 和 int 的相互转换通过查码表来实现;
三、运算符
1、运算符分类
2、算术运算符:加减乘除
(1)整数运算
- 整数的运算结果有 long 型的话最后的结果就是 long,其他的情况都是 int;
(2)浮点运算
- 只要有一个 double 结果就是 double;
(3)取模运算
- 余数的符号和左边的操作数一样:-7%3=-1,7%-3=1;
(4)一元运算符 ++ 与 --
3、赋值运算符:等于
(1)a*=b+3 相当于 a=a*(b+3)
4、关系运算符:大小判断
(1)= 是赋值运算符,== 判断是否相等
(2)==、!= 是所有(基本和引用)数据类型都可以使用;其他的符号仅针对数值类型;
5、逻辑运算符:与或非
(1)逻辑与(&);逻辑或(|);逻辑非(!);逻辑异或(^);异或的逻辑是异一;
(2)短路与(&&);短路或(||);从左到右判断,有一个不满足就不用继续判断了;
6、位运算符:二进制位的运算
(1)概览
(2)注意:& 和 | 既是逻辑运算符,也是位运算符。如果两侧操作数都是boolean类型,就作为逻辑运算符;如果两侧的操作数是整数类型,就是位运算符;
7、三目条件运算符
(1)x ? y : z ------------------ x为true执行y,否则执行z;
8、运算符的优先级
(1)不用记,提升优先级可以用小括号来实现;
(2)逻辑与、逻辑或、逻辑非的优先级(逻辑非>逻辑与>逻辑或);