Java - error:不兼容类型:int不能转换为布尔值



考虑操作:(7>>1)&1

当我们输入print语句时,它工作了:System.out.println((7祝辞祝辞1),1),//作品

但是如果我们输入if条件就会出现错误:

如果((7祝辞祝辞1),1)System.out.println("在这里");# showerror

错误:不兼容类型:int不能转换为布尔值,如果((7祝辞的在1),1)System.out.println (123),

我不明白是什么问题?

我尝试给一个变量赋值, int =(7祝辞的在1),1

如果(= = 1)System.out.println("作品");//它在这里工作,但不直接传递

正如SmallPepperZ所说,在java中,if语句不接受除boolean基本类型之外的任何参数,或者可以求值为boolean基本类型的语句。

要详细说明SmallPepperZ的答案,第二个问题的原因,要求使用变量a,是由于表达式以以下方式计算:

if( (7>>1)&1 == 1 )
if( 3 & 1 == 1 )
if( 3 & true )

你看到的错误应该如下所示:

The operator & is undefined for the argument type(s) int, boolean

要解决这个问题,请在左侧的

表达式周围添加一组括号。
if( ((7>>1)&1) == 1 ) System.out.println("Here");

按以下方式求值:

if( ((7>>1)&1) == 1 )
if( ((3)&1) == 1 )
if( (3&1) == 1 )
if( 1 == 1 )
if( true )

Java不将整数10解释为等同于布尔值truefalse,不像c++

参见为什么Java中的布尔值只接受true或false?为什么不是1或0呢?查看更多信息。

最新更新