Java布尔表达式

时间:2017-06-15 09:12:03

标签: java boolean

我在Java中注意到了一些奇怪的东西,我意外地试图评估以下布尔表达式

if (something = null && false) // error
if (false && something = null) // no error

当java编译器意识到表达式无法实现时,是否会停止对表达式的求值?

4 个答案:

答案 0 :(得分:1)

在Java中,您无法在null和布尔类型之间进行转换。

布尔表达式是一种Java表达式,在计算时,返回一个布尔值:true或false。

如您所见,布尔表达式用于条件语句,例如ifwhileswitch

要明确的是,你甚至无法在整数和布尔类型之间进行转换,就像许多其他语言一样。

答案 1 :(得分:1)

false&& null 不会给你任何错误,因为 false&&什么永远是假的,这样编译器就不会评估操作的第二个术语,因为它已经知道答案= false。

在第一种情况下: null&& false ,编译器评估第一个不是布尔值的术语,正如编译器对'&&'所期望的那样。操作。所以它会引发错误。

无论如何,在布尔操作中使用变量之前,应始终检查变量。

编辑:是的,我在问题编辑之前回答了,是的,我的回答是错的,我刚检查过(对不起)。 如果其中一个操作数不是布尔值,它将始终抛出错误。

答案 2 :(得分:0)

Java检查和(&&&)逻辑运算符的第一个操作数,如果为false,则不会计算第二个操作数。除了(||)Java检查第一个操作数是否为真之外,它还不会计算第二个操作数。

如果要对两个操作数进行求值,则可以使用位操作(&,|)

答案 3 :(得分:0)

您必须在if语句中使用booleannull不是boolean,因此两个表达式都是错误的。

也许您尝试使用:

if (something == null && false) 
if (true && something == null)

在这种情况下,两者都是正确的。