java基础之值传递机制的练习题

public class exer4 {
	public static void main(String[] args) {
		exer4 text = new exer4();
		text.first();
	}
	public void first() {
		int i = 5;
		Value v = new Value();
		v.i = 25;
		second(v,i);
		System.out.println(v.i);
	}
	public void second(Value v, int i){
		i = 0;
		v.i = 20;
		Value val = new Value();
		v = val;
		System.out.println(v.i +" " + i);
	}
	class Value{
		int i = 15;
	}
}

在这里插入图片描述
输出结果为上图
顺序过程为从main方法中进入,建立text对象,对象调用first方法,进入first方法
堆中建立局部变量i i= 5,建立v的局部变量:复制该对象的地址值0x5566,将属性中的i改为25
在这里插入图片描述
进入second方法,创建两个形参局部变量v,i
在这里插入图片描述
将i的值改成0,之后将v.i的值改为20
新建局部变量val 将对象的地址赋给val
修改变量v的值为val的地址值
在这里插入图片描述
输出v.i为15,i为0
second方法结束后val i v这三个局部变量弹出栈,此时代码回到first方法中输出v.i。v的地址为0x5566中的地址i为20

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值