Java 逻辑OR和短路OR运算符之间的区别是什么?
我得到了相同的输出: a | b=假 a | | b=假 a | b=真 a | | b=真 a | b=真 a | | b=真 a | b=真 a | | b=真Java 逻辑OR和短路OR运算符之间的区别是什么?,java,logical-operators,Java,Logical Operators,我得到了相同的输出: a | b=假 a | | b=假 a | b=真 a | | b=真 a | b=真 a | | b=真 a | b=真 a | | b=真 不同之处在于,如果第一个操作数为真,短路运算符不计算第二个操作数,逻辑或无短路运算符始终计算两个操作数 您不会在简单测试中看到任何差异,因为假设没有引发异常,这两个测试都应该给出相同的输出,但是如果您尝试以下操作: String s = null; System.out.println("a || b = " + s==null |
不同之处在于,如果第一个操作数为真,短路运算符不计算第二个操作数,逻辑或无短路运算符始终计算两个操作数 您不会在简单测试中看到任何差异,因为假设没有引发异常,这两个测试都应该给出相同的输出,但是如果您尝试以下操作:
String s = null;
System.out.println("a || b = " + s==null || s.length() == 0 );
System.out.println("a | b = " + s==null | s.length() == 0 );
第一个运算符将为true,而第二个运算符将为NullPointerException,因为只有|运算符将尝试计算s.length==0
String s = null;
System.out.println("a || b = " + s==null || s.length() == 0 );
System.out.println("a | b = " + s==null | s.length() == 0 );