当前位置: 代码迷 >> Java面试 >> 为何报错了
  详细解决方案

为何报错了

热度:659   发布时间:2013-02-25 21:24:54.0
为什么报错了




public class Lian {
public static void main(String[] args){
String foo="blue";
Boolean[] bar = new Boolean [1];

if (bar[0]) {
foo ="green";
 }
System.out.println(foo);
}
}






报的是 
java.lang.NullPointerException
为什么报空指针异常bar[0]  是个Boolean对象,但没有初始化,其值是null。
加一句:

public class Lian 
{
    public static void main(String[] args)
    {
        String foo="blue";
        Boolean[] bar = new Boolean [1];
        bar[0]=new Boolean("false");//这要初始化一下。(或bar[0]=new Boolean("true");)
        if (bar[0]) {
            foo ="green";
         }    
        System.out.println(foo);
    }
}
Boolean[] bar = new Boolean [1];
只是定义未赋值,数组值为空
bar[0]调用,自然就是空指针搞了半天才看出来是什么了
Boolean是应用数据类型  系统自动初始化null
你把Boolean换成boolean试试看
boolean是基本数据类型 那么默认值就是false  就不会报错了

局部变量中变量不会自动初始化的  但是用new的基本变量会自动初始化

Boolean是它的封装类,和其他类一样。
Boolean b = new Boolean("false“);


public Boolean(String s) {
        this(toBoolean(s));
    }boolean[] bar = new boolean[1];
  相关解决方案