有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java布尔表达式

我在Java中注意到一些奇怪的事情,我不小心尝试计算以下布尔表达式

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

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


共 (4) 个答案

  1. # 1 楼答案

    为什么错误&&;null不会给你任何错误,因为false&&;无论什么都将始终为false,因此编译器不会计算运算的第二项,因为它已经知道答案=false

    在第一种情况下:null&&;false,编译器计算第一个不是布尔值的项,正如编译器对“&&;'活动所以它会抛出一个错误

    无论如何,在布尔运算中使用变量之前,应该检查变量

    编辑:是的,我在编辑问题之前回答了,是的,我的答案无论如何都是错的,我只是检查了一下(很抱歉)如果其中一个操作数不是布尔值,它将始终抛出错误

  2. # 2 楼答案

    在Java中,不能在null和布尔类型之间转换

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

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

    需要明确的是,您甚至不能像在许多其他语言(如C语言)中常见的那样,在整数和布尔类型之间进行转换

  3. # 3 楼答案

    在if语句中必须使用boolean,并且null不是boolean,因此这两个表达式都是错误的

    也许你会尝试使用:

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

    在这种情况下,它们都是正确的

  4. # 4 楼答案

    Java检查and(&;&;)的第一个操作数逻辑运算符,如果为false,则不会计算第二个操作数。对于or(| |)Java,它会检查第一个操作数是否为真,然后不会计算第二个操作数

    如果要计算两个操作数,可以使用位运算(&;,|)