int作为布尔表达式Eclipse-Java

时间:2012-12-09 01:26:06

标签: java eclipse boolean-expression

Eclipse为什么告诉我

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

错误,或Cannot convert from integer to boolean

我习惯在C,C ++中编写类似的东西,并认为Java也可以。这是Eclipse的工作原理吗?或者Java是如何工作的?有没有解决方法?

4 个答案:

答案 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 ++知识,您将会非常沮丧。你习惯的许多习语都不会起作用,你也不会知道有效的习语。