简述运算符 & | ^
与&& ||
的区别?
参考解答
& | ^
是位运算符。分别代表按位与、按位或、按位异或;它们除了可以做位运算之外,也可以用来进行逻辑运算,进行逻辑运算时,特性是非短路,例如:
int a = 10;
int b = 5;
int c = 3;
if( a < b & c++ > 1) {
}
System.out.println(c);
虽然 a < b
已经为false,整个 a < b & c++ > 1
表达式一定为false,但由于 & 的非短路特性,导致 c++ > 1
仍然运算了一遍,c自增的结果是4。
&& ||
是逻辑运算符。分别代表逻辑与、逻辑或,特性是短路。
int a = 10;
int b = 5;
int c = 3;
if( a < b && c++ > 1) {
}
System.out.println(c);
a < b
已经为false,因此根据 && 的短路特性,后面的 c++ > 1
不用被计算了,c的结果仍然为3。