本章目标
掌握JAVA中的内存划分
初窥Java引用传递
垃圾的产生分析

 

内存划分:对象创建之初

class Person{
	String name;//声明姓名属性
	int age;//声明年龄属性
	public void tell(){//取得信息的方法
		System.out.println("姓名:"+name+",  年龄:"+age);
	}
}
public class ClassDemo02 {
	public static void main(String[] args) {
		Person per = new Person();//创建并实例化对象
	}
}

 
类与对象的进一步研究
 

内存操作:为属性赋值

class Person{
	String name;//声明姓名属性
	int age;//声明年龄属性
	public void tell(){//取得信息的方法
		System.out.println("姓名:"+name+",  年龄:"+age);
	}
}
public class ClassDemo03 {
	public static void main(String[] args) {
		Person per = null;//声明对象
		per = new Person();//实例化对象
		per.name = "张三";//为 name 属性赋值
		per.age = 30;//为 age 属性赋值
		per.tell();//调用类中的方法
	}
/*结果:
 * 姓名:张三,  年龄:30
 * */
}


类与对象的进一步研究
  

 声明多个对象

class Person{
	String name;//声明姓名属性
	int age;//声明年龄属性
	public void tell(){//取得信息的方法
		System.out.println("姓名:"+name+",  年龄:"+age);
	}
}
public class ClassDemo04 {
	public static void main(String[] args) {
		Person per1 =null;//声明 per1 对象
		Person per2 =null;//声明 per2 对象
		per1 =new Person();//实例化 per1 对象
		per2 =new Person();//实例化 per2 对象
		per1.name = "张三";//设置 per1 对象的 name 属性内容
		per1.age = 30;//设置 per1 对象的 age 属性内容
		per2.name = "李四";//设置 per2 对象的 name 属性内容
		per2.age = 33;//设置 per2 对象的 age 属性内容
		System.out.print("per1 对象中的内容 -->");
		per1.tell();//per1 调用方法
		System.out.print("per2 对象中的内容 -->");
		per2.tell();//per2 调用方法
	}
/*结果:
 * per1 对象中的内容 -->姓名:张三,  年龄:30
 * per2 对象中的内容 -->姓名:李四,  年龄:33
 * */
}

 

 内存划分
类与对象的进一步研究
 

 对象引用传递

class Person{
	String name;//声明姓名属性
	int age;//声明年龄属性
	public void tell(){//取得信息的方法
		System.out.println("姓名:"+name+",  年龄:"+age);
	}
}
public class ClassDemo05 {
	public static void main(String[] args) {
		Person per1 =null;//声明 per1 对象
		Person per2 =null;//声明 per2 对象
		per1 =new Person();//只实例化 per1 一个对象
		per2 = per1;//把per1 的堆内存空间使用权给per1
		per1.name = "张三";//设置 per1 对象的 name 属性内容
		per1.age = 30;//设置 per1 对象的 age 属性内容
		//设置 per2 对象的内容,实际上就是设置 per1 对象的内容
		per2.age = 33;
		System.out.print("per1 对象中的内容 -->");
		per1.tell();//调用类中的方法
		System.out.print("per2 对象中的内容 -->");
		per2.tell();
	}
/*结果:
 * per1 对象中的内容 -->姓名:张三,  年龄:33
 * per2 对象中的内容 -->姓名:张三,  年龄:33
 * */
}

 

引用传递内存图
类与对象的进一步研究
  

 垃圾产生

class Person{
	String name;//声明姓名属性
	int age;//声明年龄属性
	public void tell(){//取得信息的方法
		System.out.println("姓名:"+name+",  年龄:"+age);
	}
}
public class ClassDemo06 {
	public static void main(String[] args) {
		Person per1 =null;//声明 per1 对象
		Person per2 =null;//声明 per2 对象
		per1 =new Person();//实例化 per1 对象
		per2 =new Person();//实例化 per2 对象
		per1.name = "张三";//设置 per1 对象的 name 属性内容
		per1.age = 30;//设置 per1 对象的 age 属性内容
		per2.name = "李四";//设置 per2 对象的 name 属性内容
		per2.age = 33;//设置 per2 对象的 age 属性内容
		per2=per1;//将 per1 的引用传递给per2
		System.out.print("per1 对象中的内容 -->");
		per1.tell();//调用类中的方法
		System.out.print("per2 对象中的内容 -->");
		per2.tell();
	}
/*结果:
 * per1 对象中的内容 -->姓名:张三,  年龄:30
 * per2 对象中的内容 -->姓名:张三,  年龄:30
 * */
}

 

垃圾产生的内存关系
类与对象的进一步研究
 

 

 

相关文章: