为了账号安全,请及时绑定邮箱和手机立即绑定

Java 实参和形参 引发的……

标签:
Java

个人理解(不考虑基本数据类型):


变量是含有对象引用的容器。

一个对象对应唯一一个引用。

一个变量存储一个引用。

一个对象可以存储一个或多个引用(变量)。


赋值是将引用存储到变量中。


如:

class A{
private String name;
public setName(String name){
this.name=name;
}
}

在另一个测试类中:

A a=new A();

初始化后,对象产生,设对象的引用为“@isrw25”,赋值,使得变量a中存储对象的引用“@isrw25”。变量a可以通过“@isrw25”获取对象。

a.setName("theo");

字符串“theo”对象产生,它的引用也产生了,设为“@theo03”,将引用传给形参name变量存储。变量name可以通过“@theo03”获取对象“theo”。

进入set方法

public setName(String name){
this.name=name;
}

赋值,使得变量this.

name中存储引用“@theo03”。对象被改变。

changeName1(a);

进入changeName1方法,形参a存储实参a的引用,即此时形参和实参指向同一个对象。

public changeName1(A a){
a.setName("tom");
}

字符串“tom”对象产生,它的引用也产生了,设为“@tom023”,将引用传给形参name变量存储。进入set方法。赋值,使得变量this.name存储引用“@tom023”。对象被改变。

changeName2(a);

进入changeName2方法,形参a存储实参a的引用,即此时形参和实参指向同一个对象。

public changeName2(A a){
A a2=new A();
a2.setName("Lin");
a=a2;
}

初始化,产生一个不同于原对象的对象,它们是类A的两个不同实例。设先生成的A实例为前对象,changeName2方法中产生的A实例为后对象。后对象初始化后进入set方法,变量name存储字符串“Lin”的引用。后对象被改变。

a=a2;将a2的引用存储到a中,a指向的对象变为后对象,而不再是前对象了。所以前对象没有被改变。







点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消