Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 逻辑OR和短路OR运算符之间的区别是什么?_Java_Logical Operators - Fatal编程技术网

Java 逻辑OR和短路OR运算符之间的区别是什么?

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 |

我得到了相同的输出: 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 || 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 );