Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 两者之间有什么区别!=和=!在爪哇?_Java_Syntax - Fatal编程技术网

Java 两者之间有什么区别!=和=!在爪哇?

Java 两者之间有什么区别!=和=!在爪哇?,java,syntax,Java,Syntax,我在看一些模拟问题。我遇到了一个非常令人困惑的语法。这是: class OddStuff { public static void main(String[] args) { boolean b = false; System.out.println((b != b));// False System.out.println((b =! b));// True } } 为什么输出在之间变化=和=?这个问题只是在用令人困惑的间距与你

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

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)
因此它是两个操作符

  • 首先反转
    b
  • 然后将其分配回
    b

  • 赋值运算符返回指定的值。因此,
    (b=!b)
    的计算结果为true-这就是您打印出来的结果。

    b=!b
    是一项作业。它将
    b
    分配给
    !b
    表达式的计算结果为结果值,即
    true

    b=!b

    你在做作业,你在说B应该有值!B

    b!=b


    您正在询问B是否与B不同b
    表示
    !(b==b)
    :与
    b==b
    相反


    b=!b实际上是
    b=!b
    ,作业。它正在切换
    b
    的值。赋值计算为表达式的值,因此这将计算为
    !b
    (同时更改了
    b
    )的值。

    正确,更正确的是,(b=!b)vs.(b!=b)我不知道作业可以用那种方式完成。@Prometheus 87是的,你可以将作业放在语句中。太好了,我学到了一些新东西。谢谢另一个关键因素是赋值计算为赋值,因此
    System.out.println(b=!b)
    之后打印
    b
    的值!如果java C++将代码< >真/ <代码>分配给B,那么两个都返回false。看一看:P