与运算符(逻辑与'&'和短路与'&&'):
共同点:
它们都表示运算符的两边都是true时,结果为true;
不同点:
& 表示在运算时两边都会计算,然后再判断;
&&表示先运算符号左边的东西,然后判断是否为true,是true就继续运算右边的,然后判断并输出,是false就停下来直接输出,不会再运行后面的东西。
或运算符(逻辑或'|'和短路或'||'):
共同点:
它们都表示运算符的两边任意一边为true,结果为true,两边都不是true,结果就为false;
不同点:
| 表示两边都会运算,然后再判断结果
|| 表示先运算符号左边的东西,然后判断是否为true,是true就停下来直接输出,不会再运行后面的东西,是false就继续运算右边的,然后判断并输出。
代码示例:
int i = 5;
boolean e = i > 6 & i ++ > 7;
System.out.println(e);
System.out.println(i);
输出为
false
6
此时既判断了i>6,又进行了i++的运算;
而将&替换为&&后
int i = 5;
boolean e = i > 6 && i ++ > 7;
System.out.println(e);
System.out.println(i);
输出为
false
5
即在判断i>6为false后,程序并没有进一步进行&&后面的运算。
或运算符(逻辑或'|'和短路或'||')也是类似的代码执行规则,这里不再累述。