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

pro*_*spk 56 java syntax

我正在寻找一些模拟的OCJP问题.我遇到了一个非常莫名其妙的语法.这里是:

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

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

Mys*_*ial 113

问题是只是与你混淆空间.

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

另一方面:

b =! b写得更好,因为b = !b它被解析为:

b = (!b)
Run Code Online (Sandbox Code Playgroud)

因此它是两个运营商.

  1. 首先反转b.
  2. 然后将其分配回b.

赋值运算符返回指定的值.因此,(b =! b)评估为true - 这是您打印出来的.

  • 正确而且更正确它是(b =!b)与(b!= b) (4认同)
  • 另外关键是分配评估指定的值,因此`System.out.println(b =!b)`在为`!b`分配后打印`b`的值. (3认同)
  • 我不知道任务可以这样做. (2认同)

Cla*_*diu 10

b != b意思是! (b == b):相反的b == b.

b =! b实际上是b = !b一项任务.这是切换b的价值.赋值计算表达式的值,因此这将评估为!b(以及更改了值的值b).


Nat*_* S. 9

b=!b是一项任务.其分配b!b与该表达式的结果值,这是true.