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

解释:

  1. 下面为字节码,自增自减没有入栈出栈,所以L1结束后,i=1

  2. 赋值运算符=最后进行,所以L2结束后,j=1

  3. =号右边,从左到右依次入栈,但是实际计算,看运算符优先级,所以L3后,k=11

位运算

运算符

定义

&

两个都为 1,结果为 1;其它为 0

|

两个都为 0,结果为 0;其它为 1

^

两个相同为 0,不相同为 1

~

0 变 1,1变 0

<<

左移,高位丢弃,低位补 0

>>

右移,正数高位补 0,负数高位补 1,低位丢弃

>>>

无符号右移,正负数高位都补 0,低位丢弃

位移运算

异或运算

套路

例题

Last updated

Was this helpful?