前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java-值传递、地址传递

Java-值传递、地址传递

作者头像
Fisherman渔夫
发布2019-07-30 17:41:46
1.2K0
发布2019-07-30 17:41:46
举报
文章被收录于专栏:渔夫渔夫
代码语言:javascript
复制
public class TestParameterTransfer {
String name;
public TestParameterTransfer(String name){
	this.name=name;
}

public void Test01(TestParameterTransfer u){
	u.name="李寻欢";
}

public  void Test02(TestParameterTransfer u){
	u= new TestParameterTransfer("李白");
}

public static void main(String[] args){
	TestParameterTransfer u1= new TestParameterTransfer("李太白");
	System.out.println(u1);
	System.out.println(u1.name);
	u1.Test01(u1);
	System.out.println(u1);

	System.out.println(u1.name);
	
	u1.Test02(u1);
	System.out.println(u1);

	System.out.println(u1.name);
	
}
}

运行结果: TestParameterTransfer@15db9742 李太白 TestParameterTransfer@15db9742 李寻欢 TestParameterTransfer@15db9742 李寻欢

出现的疑问:Java中明确指出,方法中的所有参数都是值传递,但是为何会有类似于传了地址的情况呢?

解答:因为 首先在类里构造的(一般)方法本身是定义输入值为用类定义的对象 而调用的时候我们也根据输出结果进一步验证了对象名所对应的是一个由 TestParameterTransfer类定义的指针

形参u的地址与原参数u1不仅仅地址一样,而且类都一样,所以,形参改了,原参也改了(指向内存中的同一个对象)

然而Test02中我们又新建了一个对象,并且给他赋初值了,但是对象不同了,地址也有所区别了,所以这个初始值是给新建的对象了,对于原来的对象没有任何影响

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年03月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档