2016-04-10 12 views
0

私は同じ出力を得ています: a | b =偽 a || b =偽 a | b =真 a || b =真 a | b =真 a || b =真 a | b =真 a || B =真論理ORと短絡OR演算子の違いは何ですか?

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)); 

答えて

1

差は常に両方のオペランドを評価する論理OR短絡せず、最初のオペランドが真の場合、短絡操作者が第二オペランドを評価しないことです。

両方がスローされる例外がないと仮定すると、同じ出力が得られますので、あなたは、あなたの簡単なテストの違いを見ていないだろうが、あなたはこのような何かをしようとした場合

String s = null; 
System.out.println("a || b = " + s==null || s.length() == 0); 
System.out.println("a | b = " + s==null | s.length() == 0); 

最初のオペレータはあなたを与えるだろう第2演算子はを返しますが、演算子|のみがs.length() == 0を評価しようとします。

関連する問題