NullPointerException

1.初学Java,今天遇到了一个空指针异常,记录一下。

//原代码
public class TestNullPoint{
    int max_len = 20;
    Object[] array;
    int size = 0;
    
    public TestNullPoint(E[] e) {//自定义的构造函数
		while(e.length > max_len) {
			max_len = max_len>>1+max_len;
		}
        array = new Object[max_len];//此处对arry数组进行实例化
        System.arraycopy(e, 0, array, 0, e.length);
        size = e.length;
    }

    public boolean add(Object obj){
        if(array.length == max_len){
            max_len = max_len>>1+max_len;
            Object[] array1 = new Object[max_len];    
            System.arraycopy(array, 0, array1, 0, array.length);
            array = array1;       
         }
        array[size++) = obj;//!!!! 调用add方法此处会报空指针异常
    //Exception in thread "main" java.lang.NullPointerException
    }
//...
}
//修改后
public class TestNullPoint{
	int max_len = 20;
	Object[] array = new Object[max_len];//!!!此处实例化后便好了
        int size = 0;
    
    public TestNullPoint(E[] e) {//自定义的构造函数
        while(e.length > max_len) {
			max_len = max_len>>1+max_len;
		}
        array = new Object[max_len];
        System.arraycopy(e, 0, array, 0, e.length);
        size = e.length;
    }
    public boolean add(Object obj){
        if(array.length == max_len){
            max_len = max_len>>1+max_len;
            Object[] array1 = new Object[max_len];    
            System.arraycopy(array, 0, array1, 0, array.length);
            array = array1;      
         }
        array[size++) = obj;
    }
//...
}

原本以为数组对象的初始化放在构造函数里面就可以了,不用现在在类成员变量中初始化,但是如果类成员数组变量不先初始化,类中其他方法访问到该成员数组时就会报空指针异常。

 

你可能感兴趣的:(Java异常解决方法)