考虑操作:(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不将整数1
和0
解释为等同于布尔值true
和false
,不像c++
参见为什么Java中的布尔值只接受true或false?为什么不是1或0呢?查看更多信息。