我们将对象比作充满氢气的气球,将引用比作连着气球的绳子
1)一根绳子同一时间只能连着一个气球,就如同一个引用同时只能指向一个对象。
Student s1 = new Student();
s1目前就指向一个Student对象
2)一个气球可以被多根绳子连着,就如同一个对象同时可以被多个引用指向。
Student s2 = s1;
此时,s1和s2都指向同一个对象,任何一个引用对对象的操作都会改变此对象。
3)如果一个气球没有绳子连着,那么气球就会飞走;如果一个对象没有引用指向,此时对象就会成为系统垃圾,等待GC垃圾回收机制的回收。
s1 = null;
s2 = null;
对象无引用指向,成为孤立的节点,成为系统垃圾
4)如果一根绳子没有连着气球,就如同一个引用不指向某个对象,引用就为null。此时访问该引用的成员(属性、方法),会抛出异常:NullPointerException (空指针异常)
全名:java.lang.NullPointerException
Student s1 = null;
s1.study("JavaSE"); //运行时空指针异常
1)一根绳子同一时间只能连着一个气球,就如同一个引用同时只能指向一个对象。
Student s1 = new Student();
s1目前就指向一个Student对象
2)一个气球可以被多根绳子连着,就如同一个对象同时可以被多个引用指向。
Student s2 = s1;
此时,s1和s2都指向同一个对象,任何一个引用对对象的操作都会改变此对象。
3)如果一个气球没有绳子连着,那么气球就会飞走;如果一个对象没有引用指向,此时对象就会成为系统垃圾,等待GC垃圾回收机制的回收。
s1 = null;
s2 = null;
对象无引用指向,成为孤立的节点,成为系统垃圾
4)如果一根绳子没有连着气球,就如同一个引用不指向某个对象,引用就为null。此时访问该引用的成员(属性、方法),会抛出异常:NullPointerException (空指针异常)
全名:java.lang.NullPointerException
Student s1 = null;
s1.study("JavaSE"); //运行时空指针异常