继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Java 实参和形参 引发的……

Linzhao
关注TA
已关注
手记 2
粉丝 1
获赞 0

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


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

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

一个变量存储一个引用。

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


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


如:

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指向的对象变为后对象,而不再是前对象了。所以前对象没有被改变。







打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP