【问题标题】:Java -Boolean expression of variable and it's inverseJava - 变量的布尔表达式,它是逆的
【发布时间】:2014-03-11 04:10:06
【问题描述】:

这很令人困惑。
问题:给出每个表达式的值。

x && !x

这是真的还是假的?

【问题讨论】:

  • 除非第一个操作数为假,否则不能短路'and',在这种情况下,它返回假...
  • 如果您是一名学生,最好尝试找出您对此感到困惑的地方,并询问您的教授。这是一个非常基本的问题;你应该对这种行为有一个深刻的认识。将来你可能会以其他形式出现任何困惑。

标签: java boolean conditional-operator unary-operator


【解决方案1】:

总是false 除了xnull

&& 称为逻辑与运算符。如果两个操作数都是true,则条件变为true

【讨论】:

【解决方案2】:
true && !true => false
false && !false => false

唯一的选择是

Boolean x = null;
x && !x => NullPointerException.

【讨论】:

  • 我可以将 null 分配给 Java 中的任何变量吗?顺便说一句,感谢您的回复,非常清晰和示范。
  • @JungleJeem 您可以将其分配给任何参考,但不能是原语。
【解决方案3】:

你为什么不自己测试一下?

我不明白短路是如何适用的。要检查它是否为真,AND 运算符的两边都必须为真,并且在整个 exp 为真的情况下没有捷径。

【讨论】:

    【解决方案4】:

    我不知道我是否理解您的问题,但我不知道该表达式如何评估为真。如果将 x 设置为 True,则 !x 将评估为 False,反之亦然。只有当两个参数都为 True 时,逻辑 AND 运算才会评估为 True。由于永远不会出现这种情况,因此表达式将始终为 False。

    仅当左侧为 False 时才会发生短路。那么就不需要评估右侧了。如果左侧为 True,则表达式永远不会短路。

    【讨论】:

      【解决方案5】:

      理论上多线程可能存在一些问题,但仅限于理论上

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-04
        • 2020-09-02
        • 1970-01-01
        • 2017-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多