04-对象变成垃圾
对象变成垃圾
一般我们这样理解,当没有更多的引用指向这个对象,此时这个对象无法被使用,因此就成了一个垃圾对象。具体细节,我们可以在Java虚拟机和Java垃圾回收器GC中进行探究。
package e对象变成垃圾例子;
public class User {
//属性 实例变量 非静态变量 成员变量
//Feild
String name;
int age;
//构造方法 Constructor(以下构造方法构成了方法重载)
public User(){//构造方法没有返回值
/*
* 此处构造方法没有参数,但此处有隐形语句
* name=null;
* age=0; 即在构造方法被调用时系统默认赋值
*/
}
User(String _name){//public可以省略
name=_name;//默认赋值age=0;
//加_name是为了区分成员变量与局部变量
//在调用构造方法时让人更容易看懂将值赋给成员变量
}
User(int _age){
age=_age;//默认赋值name=null;
}
User(int _age,String _name){
age=_age;
name=_name;
}
}
/*
* 对象没有更多的引用指向,则变成垃圾
*/
package e对象变成垃圾例子;
public class Test01 {
public static void main(String[] args){
//u1是引用,保存内存地址指向堆中的对象
User u1=new User();
u1=null;//将null赋值给u1,程序执行到此处时u1不在指向堆中的对象
//对象就成了垃圾
/*此时用一个空的引用u1去访问成员变量,会出现的情况
* System.out.println(u1.name);//java.lang.NullPointerException(空指针异常)
*/
Star s=new Star();
// s = null;
s.sing();
}
}
class Star{//定义一个类不需要括号,无参量
public void sing(){//定义一个成员方法
System.out.println("sing a song");
}
}