(true!= false!= true)与(false!= true!= false)有什么不同?

ems*_*yen 2 java boolean

我最近用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上测试过).

dav*_*xxx 6

您有两个布尔比较,其中第一个比较产生的结果与另一个布尔值(最后一个)进行比较.
并且等于运算符在语法上是左关联的(它们从左到右分组).

要理解您可以通过两次比较来重写实际比较:

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)