【问题标题】:does equality operator return a boolean value相等运算符是否返回布尔值
【发布时间】:2011-09-19 15:49:40
【问题描述】:

偶数 = 数字 % 2 == 0;

这是一个有效的 Java 作业,在网站中作为示例给出。

那么等式运算符在求值后是否返回布尔值?

就像在这种情况下,数字 % 2 == 0 ,如果为真,它分配 even = true?

【问题讨论】:

  • 问问自己:还有什么意义吗?
  • @delnan:也许不是,但是有很多语言(C、C++)中的相等运算符产生一个整数。
  • @Keith:那是因为那些语言没有专用的布尔值(并且使用整数 0 和 1 代替它们,或者更一般地使用零和非零数字)。就此而言,至少其中一些语言保证比较产生 0 或 1。还有一个问题是 Java 不是这些语言之一......
  • @delnan:或多或少。 C(1999 年标准)和 C++ 都有专用的布尔类型,但它们派生自没有的语言。关键是您无法通过考虑是否有意义来确定“==”是否产生布尔值;你需要看看语言标准实际上是怎么说的。
  • 谢谢大家... :) 我没有遇到过这种测试相等运算符并分配布尔值的语句 - 都是一行。所以有点迷茫。所有答案都很有用,而且很清楚。再次非常感谢。

标签: java equality operator-keyword


【解决方案1】:

是的。比较运算符的计算结果为 boolean 值。

【讨论】:

    【解决方案2】:

    是的。来自 Java 语言规范,section 15.21

    等式运算符在语法上是左结合的(它们从左到右分组),但这个事实本质上是没有用的;例如,a==b==c 解析为 (a==b)==c。 a==b 的结果类型始终为boolean,因此 c 必须是布尔类型,否则会发生编译时错误。因此,a==b==c 不会测试 a、b 和 c 是否都相等。

    (强调我的 - 段落的其余部分有点无关,但它是重要短语出现的上下文。)

    【讨论】:

      【解决方案3】:

      是的,与 boolean operators 进行的比较评估为 boolean

      【讨论】:

        猜你喜欢
        • 2013-06-06
        • 1970-01-01
        • 2016-09-28
        • 1970-01-01
        • 2013-02-27
        • 1970-01-01
        • 1970-01-01
        • 2023-01-13
        • 2019-11-15
        相关资源
        最近更新 更多