简述运算符 & | ^&& ||的区别?

参考解答

& | ^ 是位运算符。分别代表按位与、按位或、按位异或;它们除了可以做位运算之外,也可以用来进行逻辑运算,进行逻辑运算时,特性是非短路,例如:

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。


results matching ""

    No results matching ""