Java布尔表达式
我在Java中注意到一些奇怪的事情,我不小心尝试计算以下布尔表达式
if (something = null && false) // error
if (false && something = null) // no error
当java编译器意识到表达式无法实现时,是否停止对表达式的求值
你可以在下面搜索框中键入要查询的问题!
我在Java中注意到一些奇怪的事情,我不小心尝试计算以下布尔表达式
if (something = null && false) // error
if (false && something = null) // no error
当java编译器意识到表达式无法实现时,是否停止对表达式的求值
# 1 楼答案
为什么错误&&;null不会给你任何错误,因为false&&;无论什么都将始终为false,因此编译器不会计算运算的第二项,因为它已经知道答案=false
在第一种情况下:null&&;false,编译器计算第一个不是布尔值的项,正如编译器对“&&;'活动所以它会抛出一个错误
无论如何,在布尔运算中使用变量之前,应该检查变量
编辑:是的,我在编辑问题之前回答了,是的,我的答案无论如何都是错的,我只是检查了一下(很抱歉)如果其中一个操作数不是布尔值,它将始终抛出错误
# 2 楼答案
在Java中,不能在
null
和布尔类型之间转换布尔表达式是一个Java表达式,在计算时返回布尔值:true或false
如您所见,布尔表达式用于条件语句,例如
if
、while
和switch
需要明确的是,您甚至不能像在许多其他语言(如C语言)中常见的那样,在整数和布尔类型之间进行转换
# 3 楼答案
在if语句中必须使用
boolean
,并且null
不是boolean
,因此这两个表达式都是错误的也许你会尝试使用:
在这种情况下,它们都是正确的
# 4 楼答案
Java检查and(&;&;)的第一个操作数逻辑运算符,如果为false,则不会计算第二个操作数。对于or(| |)Java,它会检查第一个操作数是否为真,然后不会计算第二个操作数
如果要计算两个操作数,可以使用位运算(&;,|)