Live2D
复制代码

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");
	}
	
}
posted @ 2021-07-22 22:11  Milen-jie  阅读(64)  评论(0编辑  收藏  举报