当前位置: 代码迷 >> J2SE >> true == false 如何避免空指针错误
  详细解决方案

true == false 如何避免空指针错误

热度:4532   发布时间:2013-02-25 00:00:00.0
true == false 怎么避免空指针异常
Boolean f ;
if (f == true )
  System.out.println (flag is set );
else
  System.out.println ( flag is not set );

请问 如果 把 f == true 改成 true == f ,可以避免空指针异常吗?
如果可以的话是怎么避免的,原理是什么?

------解决方案--------------------------------------------------------
Boolean 不是 boolean
你的 f==ture 其实做了2步操作 第一步是把 对象f转成boolean基本类型
如果你的f是NULL 就会报空指针异常

所以你倒过来写 一样会报空指针异常。
这个
"abc".equals(null) null.equals("abc") 是不一样的啊
------解决方案--------------------------------------------------------
上面写错了 应该这样写
 
Java code
Boolean f = null;        if (Boolean.TRUE == f)            System.out.println("flag is set");        else            System.out.println("flag is not set");
------解决方案--------------------------------------------------------
都说了 Boolean 不是基本类型 它是一个对象类型 
它在做逻辑运算时 会被先转换成基本类型 boolean 而这个时候 你的对象变量如果为NULL 就会报空指针异常了。


探讨

引用:

上面写错了 应该这样写
Java code
Boolean f = null;
if (Boolean.TRUE == f)
System.out.println("flag is set");
else
System.out.println("flag is not set");


知道那段代码是错的,就是想知道 是不是把 f == tru……

------解决方案--------------------------------------------------------
执行一下下面这段代码,我这是可以正确运行的,不抛异常的。只要没有调用空指针对象的方法,是不会抛空指针异常的
Java code
public static void main(String[] args) {        // TODO Auto-generated method stub        Boolean f = null;        if (Boolean.TRUE == f)            System.out.println("flag is set");        else            System.out.println("flag is not set");            }
  相关解决方案