!=和=有什么区别! 在Java中?

我正在查看一些模拟的OCJP问题。 我遇到了一个令人困惑的语法。 这里是:

class OddStuff { public static void main(String[] args) { boolean b = false; System.out.println((b != b));// False System.out.println((b =! b));// True } } 

为什么输出在!==!之间变化=!

问题就在于玩混淆空格。

b != b是通常的!= (不等于)比较。

另一方面:

b =! b b =! b更好地写成b = !b这被parsing为:

 b = (!b) 

因此,这是两个运营商。

  1. 首先倒置b
  2. 然后将其分配给b

赋值运算符返回分配的值。 因此, (b =! b)计算结果为真 – 这就是你打印的内容。

b != b意思是! (b == b) ! (b == b) :与b == b相反。

b =! b b =! b实际上是b = !b ,一个赋值。 这是切换b的价值。 赋值评估为expression式的值,所以这将评估为!b (同时已经改变了b的值)。

b=!b是一项任务。 它将b赋值给!b ,expression式求值为结果值,这是true

b =! b

你正在做一个任务,你是说B应该有!B的价值。

b!= b

你在问B是不是和B不一样