boolean类型既可以使用&&和||做逻辑运算,也可以使用&和|做逻辑运算,但前者是经过优化的(执行短路运算),后者未优化。
以下代码验证:
逻辑或||
public class Main3 { public static int p=0; public static boolean m1(){ p=1; return true; } public static boolean m2(){ p=2; return true; } public static void main(String[] args){ System.out.println(m1() || m2()); System.out.println(p); } } //输出 true 1
逻辑或|
public class Main3 { public static int p=0; public static boolean m1(){ p=1; return true; } public static boolean m2(){ p=2; return true; } public static void main(String[] args){ System.out.println(m1() | m2()); System.out.println(p); } } //输出 true 2
可以看出使用逻辑或|做逻辑运算时,m1() | m2()中,当m1()为true时,依然会执行后面的m2()函数。这是与逻辑或||的区别。