简述运算符 & | ^与&& ||的区别?
参考解答
& | ^ 是位运算符。分别代表按位与、按位或、按位异或;它们除了可以做位运算之外,也可以用来进行逻辑运算,进行逻辑运算时,特性是非短路,例如:
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。