java - 逻辑或和短路或运算符有什么区别?

标签 java logical-operators

I am getting the out same output: a | b = false a || b = false a | b = true a || b = true a | b = true a || b = true a | b = true a || b = true

What is the difference between these two operators ? 

boolean a = false;  
boolean b = false;  

System.out.println("a | b = " + (a|b) );
System.out.println("a || b = " + (a||b) );

a = false;  
b = true;   
System.out.println("a | b = " + (a|b) );
System.out.println("a || b = " + (a||b) );

a = true;   
b = false;  
System.out.println("a | b = " + (a|b) );
System.out.println("a || b = " + (a||b) );

a = true;   
b = true;   
System.out.println("a | b = " + (a|b) );
System.out.println("a || b = " + (a||b) );

最佳答案

区别在于,如果第一个操作数为 true,短路运算符不会计算第二个操作数,而没有短路的逻辑 OR 始终计算两个操作数。

在简单的测试中你不会看到任何差异,因为假设没有抛出异常,两者应该给出相同的输出,但如果你尝试这样的事情:

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 .

关于java - 逻辑或和短路或运算符有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36526878/

相关文章:

c - C 上的短路评估

javascript - 对于奇数测试,按位 AND 运算符总是比模数快(仍然)吗?

r - 在 R 中跨多个列应用矢量化子集

java - 如何将 ViewPager 添加到 Android 应用程序中的抽屉导航项?

java - Hadoop 中的文件 ID

java - 无法在 Java 中释放 Mat 对象

wordpress - 合并标签中的逻辑,重力形式

javascript - Javascript 中的逻辑相等表达式

java - 初始化变量和效率

java - Apk 扩展文件 - 应用程序许可 - 开发者帐户 - NOT_LICENSED 响应