&&运算符
简洁与或者短路与
只有两个操作数都是true,结果才是true。如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行
运算。
&运算符
(1)按位与:两个为1才为1
【解义】对两个整数的二进制形式逐位进行逻辑与 运算,原理:1|0=0,0|0=0,1&1=1;0&1=0等。
4&-5:
4的二进制形式为:00000000 00000000 00000000 00000100,
-5的二进制形式为:11111111 11111111 11111111 11111011,
逐位进行逻辑与运算:00000000 00000000 00000000 00000000,即得到0.
实际应用:可以把字节转换为整 数,-64&0xFF=192,也可以用八进制的形式,-64&0377=192、
其实0xFF和0377都表示的是整数255、
(2)逻辑与
只有两个操作数都是true,结果才是true。不管前一操作是否为false,后续任会进行。
很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定用户名不是 null 而且不是空字符串,应
当写为 username != null &&!username.equals(""),二者的顺序不能交换,更不能用&运算符,因为第一个条件如
果不成立,根本不能进行字符串的 equals 比较,否则会产生 NullPointerException 异常。注意:逻辑或运算符(|)
和短路或运算符(||)的差别也是如此。
简单的例子:
public static void main(String[] args) {
int a = 0;
boolean b = false;
if (b && a++ == 0)
;
System.out.println(a);
if (b & a++ == 0)
;
System.out.println(a);
}
结果:
0
1