/*
空指针异常属于运行异常,是程序运行期间出现的一种异常。
当"空引用" 访问 "对象(实例)相关"的数据时,会出现空指针异常。
在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; }