java碎片整理之Boolean变量和null的运算报空指针异常

  把Boolean变量的初始为null,在与其他Boolean变量运算时,有以下情况:

1、||运算时,如果Boolean变量值为true并且在左边,变量值为null类型的在右边,编译不会报错,运行时不会报空指针异常,会输出左边的Boolean变量值true,如果Boolean变量值为false并且在左边,变量值为null类型的在右边,编译不会报错,运行时会报空指针异常,原因是运算时自左向右,如果左边是true,||短路,则不会往由继续运算,左边为false会继续运算||右边的null,这时报空指针异常,如图:

bl1=true;bl2=null;输出结果true。

bl2=false;运行时空指针异常

2、||运算时,Boolean变量值为null的变量在||左边,无论右边变量值为true还是false,运行时都会报空指针异常。时间关系不贴图了,道理很简单,只要将null加入||运算就会报空指针,右边是什么值都没用。

3、&&运算时,false在&&左边,null在右边,输出false;true在&&左边,null在右边,运行时空指针;null在左边,右边无论是true还是false,运行时都空指针。

    总结以此类推可以知道,|和&有null参与运算时,一定会报空指针,因为这两个运算符非短路运算符,||和&&有null参与运算存在不报空指针的情况是因为如果值符合要求会有短路情况出现,不会继续运算右边。

猜你喜欢

转载自blog.csdn.net/technology01/article/details/81258589