JAVA_learning4

内存解析

example

class BirthDate{
	private int day;
	private int month;
	private int year;
	
	public Birthdate(int d, int m, int y) {//构造方法,加不加public有什么区别
		day = d;
		month = m;
		year = y;
	}
	
	public void setDay(int d) {//普通方法
		day  = d;
	}
	
		public void setMonth(int m) {
		month  = m;
	}
	
		public void setYear(int y) {
		year  = y;
	}
	
		public int getDay() {//普通方法 
			return day;
		}
		
			public int getMonth() {
			return month;
		}
		
			public int getYear() {
			return year;
		}
		
		public void display(){
			System.out.println(day + "-" + month + "-" + year;)
		}
	}

public class Test{
	public static void main (String args[]) {
		Test test = new Test();//局部变量(方法中定义)test,同时在堆内存中会产生一个test对象
		int date = 9;//局部变量,放在栈内存中
		BirthDate d1= new BirthDate(7,7,1970); //局部变量
		BirthDate d2= new BirthDate(1,1,2000); //局部变量
		test.change1(date);//调用change1
		test.change2(d1);
		test.change3(d2);
		System.out.println("date" + date);
		d1.display();
		d2.display();
		
	}
	public void chang1(int i){//形参i,与局部变量等同,在栈内存中产生一个i,并把date的值传递给i
		i = 1234;
	}//cahnge1完成后,所有局部变量消失,i消失,date依然为9

	public void change2(BirthDate b ) {//传递一个birthdate的引用类型(d1,d2)d1,因为d1指向存在于
	//堆内存中的(7,7,1997),故b也指向(7,7,1997)
		b = new BirthDate(22,2,2004);//创建新的指向对象(22,2,2004)
	}//栈内存中的b变量在方法结束后立即消失,堆内存中新创建的对象之后也会消失

	public void change3(BirthDate b) {//创建变量b,将d2的值赋给b,b就指向d2指向的对象(1,1,2000),
		b.setDay(22);//调用BirthDaate的方法s etDay——创建局部变量d, 将22传给d,d再传给day,由(1,1,2000)变为(22,1,2000 )
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值