类与对象的进一步研究

本章目标
掌握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
 * */
}

 

垃圾产生的内存关系

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值