/*
空指针异常属于运行异常,是程序运行期间出现的一种异常。
当"空引用" 访问 "对象(实例)相关"的数据时,会出现空指针异常。
在Java中,垃圾回收器(GC)主要针对的是堆内存,当一个Java对象没有任何引用指向该对象时
垃圾回收器(GC)会将该对象当做垃圾回收(也就是将该对象的内存空间释放,Java程序员就不能
再次访问该对象了)
*/
class T{//运行内存图见:D:\java\
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();
c.o4 = d;
b.o3 = c;
a.o2 = b;
/* 如果下行代码不将引用a赋值给t.o1,那么t.o1将被系统赋给默认值null(也就是t.o1 = null), 这样运行期间就会出现空指针异常(java.lang.NullPointerException) */
t.o1 = a;
//编写代码通过t来访问D中的i
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;
}