【问题标题】:Why is is not possible to test anything other than a boolean? [duplicate]为什么不能测试布尔值以外的任何东西? [复制]
【发布时间】:2012-05-15 15:51:28
【问题描述】:

可能重复:
Why boolean in Java takes only true or false? Why not 1 or 0 also?

我今天想知道为什么 Java 不能测试除布尔值之外的任何其他类型。

在 C、C++ 和许多其他语言(实际上是大多数编程语言)中,以下是可能且有效的:

int a = 0;
if (a) // evaluates to false
  ; // do something nice

a = 6;
if (a) // evaluates to true
  ; // do something more

这也适用于对象、数组的几乎所有地方;任何可以在内存中具有0x00000000 值的东西。

问题:为什么这在 Java 中不可能(您必须继续测试 == 0== null)?

【问题讨论】:

  • 因为Java就是这样。我还假设 if 语句本质上是布尔值,数字并不是真正的布尔值,因此将数字用作布尔值不会被认为是真正适合类型的。
  • 因为在 if 条件中评估除布尔值之外的任何内容都是没有意义的。
  • C/C++ 支持基类型之间的更多隐式转换
  • (FWIW,我已经为链接的问题添加了一个新答案......)

标签: java boolean


【解决方案1】:

我猜这是因为它简化了事情。

if 语句必须根据两个可能的条件之一来评估一个值。 Java 所做的是要求您提供一个语句本身,该语句必须评估两个可能的条件(布尔值)而不是接受其他值并任意决定其评估结果是真还是假。

【讨论】:

    【解决方案2】:

    因为 James Gosling 等人 认为 Java 不会这样做。

    【讨论】:

      猜你喜欢
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-12
      相关资源
      最近更新 更多