为什么 Eclipse 会告诉我
int a = 4;
if (a) {
//do stuff
}
是错的,还是Cannot convert from integer to boolean
?
我习惯用 C、C++ 编写类似的东西,并且认为 Java 也可以。它是 Eclipse 的工作原理吗?还是 Java 是如何工作的?有什么解决方法吗?
为什么 Eclipse 会告诉我
int a = 4;
if (a) {
//do stuff
}
是错的,还是Cannot convert from integer to boolean
?
我习惯用 C、C++ 编写类似的东西,并且认为 Java 也可以。它是 Eclipse 的工作原理吗?还是 Java 是如何工作的?有什么解决方法吗?
Java 与 C++ 不同,从一开始就有一个内置的布尔类型。
因此,它不需要使用整数作为布尔值。
if (x = 4)
在大多数情况下,禁止将整数隐式转换为布尔值可以防止臭名昭著的错误。
在 java 中,布尔 literls 只能有true和false值。0 和 1 在 java 中不能作为布尔值工作。
来自java语言规范:
boolean 类型有两个值,由布尔文字 true 和 false 表示
这样做的原因是在 C 中没有特定的类型boolean
- 相反,任何非 0 整数都会计算为布尔值“真”。因此在您的 C 代码中:
if(a)
a
被赋值为 4,它是非 0 - 并且条件被评估为true
在java中,有一个基本类型boolean
,里面的条件值if
必须是这个类型。
a=4
在 Java 中,将 4 分配给a
并返回评估的最终结果integer value 4
,但是 typeboolean
是预期的 - 因此您会收到有关不兼容类型的编译时错误。
对于 int 变量 a,if(a != 0) 在 Java 中的作用与在 C 或 C++ 中的 if(a) 相同。
更一般地说,认识到 Java 不是 C 或 C++ 的方言非常重要。最强的相似之处在于表面上。Java 必须作为一种不同的语言来学习。如果您在编写 Java 时依赖于 C 或 C++ 知识,您会感到非常沮丧。你习惯的许多成语都行不通,你也不会知道行之有效的成语。