【问题标题】:What is the difference between != and =! in Java? [duplicate]!= 和 =! 有什么区别?在 Java 中? [复制]
【发布时间】:2012-02-08 04:43:12
【问题描述】:

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

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

为什么!==! 之间的输出会发生变化?

【问题讨论】:

标签: java syntax


【解决方案1】:

这个问题只是在与你混淆间距。

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

另一方面:

b =! b 最好写成b = !b 解析为:

b = (!b)

因此它是两个运算符。

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

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

【讨论】:

  • 正确,更正确的是 (b = !b) vs. (b != b)
  • 我不知道作业可以用这种方式完成。
  • @Prometheus87 是的,您可以将赋值放在语句中。
  • 太好了,我学到了一些新东西。谢谢!
  • 另外关键是赋值计算为分配的值,因此System.out.println(b = !b) 在将!b 分配给它之后打印b 的值。
【解决方案2】:

b != b 表示! (b == b):与b == b 相反。

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

【讨论】:

    【解决方案3】:

    b=!b 是一个分配。它将b 分配给!b,表达式的计算结果为true

    【讨论】:

      【解决方案4】:

      b =! b

      你正在做一个作业,你是说 B 应该有 !B 的值。

      b != b

      你问的是 B 是否不同于 b

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-17
        • 2022-01-06
        • 2013-12-24
        • 1970-01-01
        • 1970-01-01
        • 2011-01-02
        • 2015-11-23
        • 2013-02-13
        相关资源
        最近更新 更多