1

为什么 Eclipse 会告诉我

int a = 4;
if (a) {
    //do stuff
}

是错的,还是Cannot convert from integer to boolean

我习惯用 C、C++ 编写类似的东西,并且认为 Java 也可以。它是 Eclipse 的工作原理吗?还是 Java 是如何工作的?有什么解决方法吗?

4

4 回答 4

9

Java 与 C++ 不同,从一开始就有一个内置的布尔类型。
因此,它不需要使用整数作为布尔值。

if (x = 4)在大多数情况下,禁止将整数隐式转换为布尔值可以防止臭名昭著的错误。

于 2012-12-09T01:27:26.463 回答
4

在 java 中,布尔 literls 只能有truefalse值。0 和 1 在 java 中不能作为布尔值工作。

来自java语言规范

boolean 类型有两个值,由布尔文字 true 和 false 表示

于 2012-12-09T01:27:34.873 回答
0

这样做的原因是在 C 中没有特定的类型boolean- 相反,任何非 0 整数都会计算为布尔值“真”。因此在您的 C 代码中:

if(a)

a被赋值为 4,它是非 0 - 并且条件被评估为true

在java中,有一个基本类型boolean,里面的条件值if必须是这个类型。

a=4

在 Java 中,将 4 分配给a并返回评估的最终结果integer value 4,但是 typeboolean是预期的 - 因此您会收到有关不兼容类型的编译时错误。

于 2012-12-09T02:03:05.237 回答
0

对于 int 变量 a,if(a != 0) 在 Java 中的作用与在 C 或 C++ 中的 if(a) 相同。

更一般地说,认识到 Java 不是 C 或 C++ 的方言非常重要。最强的相似之处在于表面上。Java 必须作为一种不同的语言来学习。如果您在编写 Java 时依赖于 C 或 C++ 知识,您会感到非常沮丧。你习惯的许多成语都行不通,你也不会知道行之有效的成语。

于 2012-12-09T02:15:31.733 回答