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