空指针异常

示例:

/*
    空指针异常(NullPointerException)
    
    关于垃圾回收器:GC
        在java语言中,垃圾回收器主要针对的是堆内存。
        当一个java对象没有任何“引用”指向该对象的时候,GC会考虑将该垃圾数据释放回收掉。
        
    出现空指针异常的前提条件是?
        “空引用”访问实例【相关对象】相关的数据时,都会出现空指针异常。
*/
public class NullPrinterTest{
    public static void main(String[] args){
        // 创建客户对象
        Customer c = new Customer();
        // 访问这个客户变量
        System.out.println(c.id);//0
        
        // 重新给id赋值
        c.id = 9521;//终身代号
        System.out.println("客户的id" + c.id);//0
        
        c = null;
        // java.lang.NullPointerException
        // 编译器没问题,因为编译器只检查语法,编译器发现c是Customer类型
        // Customer类型中有id属性,所以可以:c.id。语法过了。
        // 但是与运行的时候需要对象的存在,但是对象没了,尴尬了,就只能出现一个异常。
        System.out.println(c.id);
    }
}
class Customer{
    // 客户id
    int id;// 成员变量中的实例变量,应该先创建对象,然后通过“引用”的方式访问。
}

示例:

public class T{
    A o1;
    public static void main(String[] args){
        D d = new D();
        C c = new C();
        B b = new B();
        A a = new A();
        T t = new T();
        
        // 这里不写代码会出现java.lang.NullPointerException异常。(空指针异常。)
        /*c.o4 = d;
        b.o3 = c;
        a.o2 = b;
        t.o1 = a;*/
        
        System.out.println(t.o1.o2.o3.o4.i);
    }
}
class A{
    B o2;
}
class B{
    C o3;
}
class C{
    D o4;
}
class D{
    int i;
}
原文地址:https://www.cnblogs.com/xlwu/p/13053015.html