我最近用Java进行了入门测试,这个问题让我很困惑.完整的问题是:
boolean b1 = true;
boolean b2 = false;
if (b2 != b1 != b2)
System.out.println("true");
else
System.out.println("false");
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是(b2!= b1!= b2)是什么意思,第二个问题,如标题中所指定的,是如何(false!= true!= false)求值为true而(true!= false!= true)评估为假(我在Netbeans上测试过).
您有两个布尔比较,其中第一个比较产生的结果与另一个布尔值(最后一个)进行比较.
并且等于运算符在语法上是左关联的(它们从左到右分组).
要理解您可以通过两次比较来重写实际比较:
1)false != true != false== true as
boolean result = false != true; // ->true
result = true != false; // ->true
result == true;
Run Code Online (Sandbox Code Playgroud)
2)true != false != true== false as
boolean result = true != false; // -> true
result = true != true; // -> false
result == false;
Run Code Online (Sandbox Code Playgroud)
或者您也可以用括号括起第一个比较,以便于阅读评估优先级(从左到右):
1) false != true != false== true as
<=> (false != true) != false
<=> true != false
<=> true
Run Code Online (Sandbox Code Playgroud)
2)true != false != true== false as
<=> (true != false) != true
<=> true != true
<=> false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |