1.出现空指针异常的前提条件
2.垃圾回收器:GC
// 把这个内存图画出来。一定要按照程序的执行顺序一步一步画。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();//这里不写代码会出现NullPointerException异常。(空指针异常。)c.o4 = d;b.o3 = c;a.o2 = b;t.o1 = a;// 编写代码通过t来访问d中的i//System.out.println(T.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;}
/*空指针异常。(NullPointerException)关于垃圾回收器:GC在java语言中,垃圾回收器主要针对的是堆内存。当一个java对象没有任何引用指向该对象的时候,GC会考虑将该垃圾数据释放回收掉。出现空指针异常的前提条件是?"空引用"访问实例【对象相关】相关的数据时,都会出现空指针异常。*/public class NullPointerTest{public static void main(String[] args){// 创建客户对象Customer c = new Customer();// 访问这个客户的idSystem.out.println(c.id); // 0// 重新给id赋值c.id = 9521; // 终身代号System.out.println("客户的id是=" + c.id);c = null;// NullPointerException// 编译器没问题,因为编译器只检查语法,编译器发现c是Customer类型,// Customer类型中有id属性,所以可以:c.id。语法过了。// 但是运行的时候需要对象的存在,但是对象没了,尴尬了,就只能出现一个异常。System.out.println(c.id);}}class Customer{// 客户idint id; // 成员变量中的实例变量,应该先创建对象,然后通过“引用.”的方式访问。}

文章转载自哈特费尔德的思考,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




