java中方法可以修改对象引用作为参数的状态。这句话如何理解?

一个书中的例子:publicvoidstatictripleSalary(Employeex){x.raiseSalary(200);}然后当调用这个方法时:harry=... 一个书中的例子:public void static tripleSalary(Employee x){x.raiseSalary(200);}然后当调用这个方法时:harry = new Employee();tripleSalary(harry);注释:1、x被初始化harry的一个拷贝,是一个对象的引用;2、raiseSalary应用于这个对象引用,x和harry同时引用的那个Emp对象的雇员薪金被增200%;3、方法结束后,参数变量x不再使用,对象变量harry继续引用那个薪金增值三倍的雇员对象;问题出来了:我在这个程序中,都没有看见,方法的参数中,对象引用的状态或者是指向对象引用的参数值被改变了。tripleSalary方法后的Employee类和后面调用harry的harry =new Emp(...);的Employee类是同一个类吗? 展开
 我来答
匿名用户
推荐于2018-07-03
展开全部
就是引用对象传参,传到函数里边你在函数里修改它,实参也会变

比如数组是引用对象吧
void foo(int[] a)有这么一个函数,你在函数体里a[0] = 3;

然后其他地方调用foo
int[] a = new int[]{1,2,3,4};
foo(a);
// 到这里结果a[0]就变成3了

你例子里的x和harry你可以看作是一个指代,它们两指向同一快内存,在函数里x修改了它指向的地方,也就相当于harry指向的地方被修改了

下面->表示指向,比如a->xxx,a指向xxx这块内存

a -> Employee(A)
b -> Employee(B)

传参到swap里
a = x -> Employee(A)
b = y -> Employee(B)
swap结束时
b = x -> Employee(B)
a = y -> Employee(A)
也就是说,swap只是交换x和y的引用,它们两引用的对象被交换了,然后x和y是swap内部的局部变量,函数结束就over了
对调用者传入的a和b没有实质上的改变
匿名用户
2013-11-11
展开全部
java 方法的传递都是值传递,也就是说,无论是基本类型还是对象类型,都会产生一个拷贝,唯一不同的是基本数据类型,拷贝的是值对象数据类型,拷贝的对象的内存地址public static void swap(Employee x,Employee y){Employee temp = x; //现在x,a都指向同一个对象x = y;y = temp;}所以x,y的交换不会影响的a,b的指向
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6577fca
2018-03-14 · 超过21用户采纳过TA的回答
知道答主
回答量:78
采纳率:61%
帮助的人:9.5万
展开全部
类肯定是同一个类,你是没弄明白类和对象的区别吧,这个方法传入的是一个类的对象,方法里面修改就是传入的对象,方法执行完这个对象的值就被修改了。在这个过程中,对象的内存地址没有变,也就是说,对象还是那个对象。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梁勃机采南
2019-12-22 · TA获得超过4229个赞
知道大有可为答主
回答量:3034
采纳率:29%
帮助的人:156万
展开全部
他们是指向同一个地址的引用,两个引用都指向创建的harry=new
Employee()这个new的对象,所以,对于对象传递来说,引用所指向的实际对象的值肯定会发生变化,这是对象引用的传递,和基本类型的值传递是不一样的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天空glcNg
2018-07-02
知道答主
回答量:13
采纳率:0%
帮助的人:8.4万
展开全部
你看的是java核心技术卷1吧,好像是第4章的内容。
这里的这句话
“java中方法可以修改对象引用作为参数的状态“
意思是:
这里的“参数的状态”其实说的是对象的field的值,也就是可以改变对象内部的属性field值。
很多时候看不懂是因为翻译的问题,这里我给出英文版的翻译,自己体会一下:
• A method cannot modify a parameter of primitive type (that is, numbers or boolean
values).
• A method can change the state of an object parameter.// 这里的state其实翻译成状态我觉得误导性很强,不如翻译成属性好一点
• A method cannot make an object parameter refer to a new object.
-----------------------------------------------
其实这句话看了这句话下面的例子就应该知道这里的state指的是属性
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式