1 . 运算符与表达式
1 . 2 算术运算符
- 整数参与运算,结果是整数
- 小数参与运算,结果不一定准确!!!
2 . 隐式转换
只有类型一样的数据才能进行运算
2 . 1 隐式类型转换的提升规则:
例:
3 . 强制转换
double a = 12.3;
int b = (int)a;
// 则此时 b 的值为12
byte b1 = 10;
byte b2 = 20;
byte result = b1 + b2; // 这样是错的,因为byte会先转换为int进行计算
// 应该改为
byte result = (byte)(b1 + b2);
4 . 字符串的 加 操作
- 当 "+" 操作中出现字符串时,这个 "+" 是字符串连接符,而不是算术运算符
"abc" + true // "abctrue"
- 当进行连续的 "+" 操作时,从左到右逐个进行
5 . 字符的 加 操作
6 . 自增自减运算符
int x = 10;
int y = x++;
int z = ++x;
// x : 12
// y : 10
// Z : 12
7 . 赋值运算符
细节注意:
- +=、 -= 、 * = 、 /= 运算符的底层都隐藏了一个强制类型转换。
short a = 1;
a += 1;
// 等同于
a = (short)(a + 1);
8 . 关系(比较)运算符
9 . 逻辑运算符
10 . 短路逻辑运算符
- 短路效果 :简单理解为当左边的表达式可以确定最终的结果,那么右边的就不会参与执行了。
let a = 10;
let b = 10;
boolen result = ++a < 5 && ++b < 5 // false
System.out.printIn(a) // 11
System.out.printIn(b) // 10
let a = 10;
let b = 10;
boolen result = ++a < 5 & ++b < 5 // false
System.out.printIn(a) // 11
System.out.printIn(b) // 11