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/