记录易错点
算数运算符
/ 运算符
double b = 10 / 4; // 2.0 因为10/4为2, double类-->2.0
% 取模、取余
%的本质是 a%b = a - a / b * b
System.out.println(10 % 3); 1
System.out.println(-10 % 3); -1
System.out.println(10 % -3); 1
System.out.println(-10 % -3); -1
自增运算 i++ / ++i
引用知乎的一位网友解释(即将韩老师的解释,使用函数返回值解释)
个人理解:
可以理解为一个存储空间名为i,值为1
i = i++; 在进行自增之前,将‘1’存储到了名为i的地方,自增后,2这个值并没有进行存储。
i = ++i; 先将值‘1’进行自增,为‘2’,然后将‘2’这个值进行了存储。
关系运算符
略
逻辑运算符
1. a^b异或,当a和b不同时,结果为true,否则为false
2. a&b逻辑与,a&&b短路与。区别:
对于&&短路与,若第一个条件为false,后面的条件不再判断。(效率较高,开发中常用)
对于&逻辑与,若第一个条件为false,后面的条件仍然会判断。
3. a | b逻辑或,a || b短路或。区别:
对于 || 短路或,若第一个条件为true,后面的条件不再判断。(效率较高,开发中常用)
对于 | 逻辑或,若第一个条件为true,后面的条件仍然会判断。
赋值运算符
复合赋值运算符会进行类型转换
byte a = 23;
a += 2; //等价于a = (byte)(a + 2)
a++; //等价于 a = (byte)(a + 1)
三元运算符
基本语法:
条件表达式 ? 表达式1 : 表达式2;
若条件表达式为true,运算后的结果为表达式1;
若条件表达式为false,运算后的结果为表达式2;
命名规则
略