Operator
运算符优先级
自增与自减
分析下面代码的结果:
public class Test {
public static void main(String[] args) {
int i = 1;
i = i++;
int j = i++;
int k = i + ++i * i++;
System.out.println("i=" + i);
System.out.println("j=" + j);
System.out.println("k=" + k);
}
}结果:
i=4
j=1
k=11解释:
下面为字节码,自增自减没有入栈出栈,所以L1结束后,
i=1。赋值运算符
=最后进行,所以L2结束后,j=1。=号右边,从左到右依次入栈,但是实际计算,看运算符优先级,所以L3后,k=11。
位运算
运算符
定义
&
两个都为 1,结果为 1;其它为 0
|
两个都为 0,结果为 0;其它为 1
^
两个相同为 0,不相同为 1
~
0 变 1,1变 0
<<
左移,高位丢弃,低位补 0
>>
右移,正数高位补 0,负数高位补 1,低位丢弃
>>>
无符号右移,正负数高位都补 0,低位丢弃
位移运算
异或运算
套路
例题
Last updated
Was this helpful?
