运算符:是一种具有特殊功能的符号
表达式:是由运算符与操作数组成,最终能得到结果的公式
整数除以0报错,浮点数除以0无穷大(Infinity)
int a=10;
a=a+++a+++a++;
System.out.println(a); //a=33
1.获得a指向的值记作临时 10
2.计算a++,10+a+++a++ 此时a=11
3.10+11+a++ 此时a=12
4.10+11+12=33 此时a=13
5.将33赋值给a
“&&”:其中一个为错,结果为错
“||”: 其中一个为对,结果为对
“A&&B”在A为错时,不会考虑B,因此B不会执行
“A||B” 在A为对时,不会考虑B,因此B不会执行
因此逻辑与或,也称为短路与或
三目运算符:<表达式1>?<表达式2>:<表达式3>
表达式1为真,执行表达式2
假 3
优先级:1.()和[]
2.++、–、+(正)、-(负)、!
3.*、/、%、+、-
4.>、>=、<、<=、==、!=
5.&、&&、|、||
6、?:、=、*=、/=、+=、-=
位运算符: 非 ~A 按位取反
与 A&B 都为1才为1
或 A|B 都为0才为0
异或 A^B 相同为0不同为1
左移 A<<n 向左移n位,前n位舍弃,后n位补0
右移 A>>n 右 ,正数前n位补0,负数前n位补1,后n位舍弃
无符号右移 A>>>n 向右移n位,前n位补0后n位舍弃
3:00000011 ~3 11111100 -4
5:00000101 3&5 00000001 1
3|5 00000111 7
3^5 00000110 6
3<<2 000011001 2 在精度不丢失时,左移1位相当于*2消耗的资源远 低于乘法运算
3>>1 00000001 1
-3:11111101 -3>>>1 由于计算机将其转为int类型 2147483646