gpt4 book ai didi

Java - 通过 "Reference Value"?检索值还是引用值?

转载 作者:行者123 更新时间:2023-12-02 07:38:18 25 4
gpt4 key购买 nike

如果我有一门像下面这样的类(class):

public class Foo()
{
private RandomObject randomObject = new RandomObject();

public RandomObject GetRandromObject()
{
return randomObject;
}
}

在另一个类中我这样做:

public class Goo()
{
private Foo fooObject = new Foo();

public Goo()
{
RandomObject ro = fooObject.GetRandomObject();

ro.ChangeNumberVariable(23);
}
}

请问fooObjectrandomObject NumberVariable改为23?

如果没有,我只需要在 Foo 中有一个方法即可叫SetRandomObject然后传入 ro ?这可以很好地替代 Java 中的引用传递吗?

如果我这样做会怎样:

public class Goo()
{
private Foo fooObject = new Foo();

public Goo()
{
fooObject.GetRandomObject().ChangeNumberVarialbe(23);
}
}

还是没有改变NumberVariable吗? ?

最佳答案

在这两种情况下,fooObject.randomObject 都会将 NumberVariable 更改为 23。它们几乎是等效的,只是前者使用了额外的引用。

这不会使 Java 进行引用传递。 Java是按值传递的。每当您将某些内容作为参数传递给方法时,即使您传递的是对象的引用,它也会被复制。

虽然您可以使用复制的引用来访问和改变其末尾的对象,就像您在这里所做的那样,但对该引用的任何重新分配都无法逃脱该方法。

在你的第一个例子中:

ro = new RandomObject();

不会改变 fooObject.randomObject 的任何内容。

关于Java - 通过 "Reference Value"?检索值还是引用值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11909458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com