例:a=1 b=2
a=b++ 先赋值后自增
a=2 b=3
a=++b 先自增后赋值
a=3 b=3
运算符 描述 示例 结果
= 赋值 a=10 a=10
+= 加等于 a=1 a+=3 a=4
-= 减等于 a=1 a-=3 a=-2
*= 乘等于 a=1 a*=3 a=3
/= 除等于 a=10 a/=3 a=3
%= 模等于 a=10 a%=3 a=1
short s=10;
s=s+1;
输出是错的,精度损失。因为1默认是int,从大变小造成精度损失。但是写成s+=1不会错误,可以想象成s=s+1
0是正数,1是负数
1.按位取反~ 把十进制正数转换二进制为负数
0000 0101 1111 1010
2.按位与& 全1则1,全0则0,不同为0
1100 1011 0110 1101 = 0100 1001
3.按位或| 全1则1,全0则0,不同为1
1100 1011 0110 1101 = 1110 1111
4.按位异或^ 相同为0,不同为1
1100 1011 0110 1101 = 1010 0110
&于和&&短路与的区别:
&:在逻辑运算时分别计算表达式两边的结果,在做&运算。在做位运算时&表示按位与
&&:短路与运算,先计算左边的表达式,如果结果是false,那么不用计算右边的表达式,直接返回false
如果左边的表达式是true,在计算右边的表达式,如果右边的表达式为true,返回true,否则为false
|或与||短路或原理同上。
位移运算符:
左移:“a<<b;”将二进制形式的a逐位左移b位,最低位空出的b位补0
带符号右移:“a>>b;”将二进制形式的a逐位右移b位,最高位空出的b位,补原来的符号位
无符号右移:“a>>>b;”将二进制形式的a逐位右移b位,最高位空出的b位补0
面试题:(用位移方法最快)
最快的速度计算8*4的结果
4=2的2次幂
8<<2
面试题:(用异或^方法最快,相同为0,不同为1)
不使用第三个变量交换两个数的位置(a和b不能相同)
a=a^b b=a^b a=a^b
就可以交换位置
浙公网安备 33010602011771号