【发布时间】: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,我已经为链接的问题添加了一个新答案......)