这里主要分析的是一些易混淆的运算符:
&:与运算符,当两个操作数中位都为1,结果才为1,否则结果为0
&&:短路与,当判定条件满足一个时,接下来的判定运算将不做操作。注意:字符串判空必须先判null再判“”
|:或运算符,两个位只要有一个为1,那么结果就是1,否则就为0
||:短路或,当判定条件满足一个时,接下来的判定运算将不做操作。
~:非运算符,如果位为0,结果是1,如果位为1,结果是0。
^:异或运算符,两个操作数的位中,相同则结果为0,不同则结果为1。
0^0=0
0^1=1
1^0=1
1^1=0
>>:表示右移运算,如果该数为正,则高位补0,如果为负,则高位补1
res=20>>2
20的二进制是00010100,右移两位后为00000101,所以res=5
res=-20>>2
-20的二进制是11101011,右移两位后为11111010,所以res=-5
<<:表示左移运算,如果该数为正,则低位补0,如果为负,则低位补1
>>>:无符号右移,也叫逻辑右移,高位补0
instanceof:用来在运行时指出该对象是否是特定类的一个实例,返回布尔值
String a = "asd";
System.out.println(a instanceof String);
结果为true
?:三元表达式