gpt4 book ai didi

java - 下面的程序是做什么的?

转载 作者:行者123 更新时间:2023-12-02 04:03:17 24 4
gpt4 key购买 nike

    class Ideone
{
int x;
public static void main (String[] args) throws java.lang.Exception
{
Ideone i;
i = new Ideone();
i.x = 25;
System.out.println(i.x);
f(i);
System.out.println(i.x);
g(i);
System.out.println(i.x);
}

public static void f(Ideone j){
j = new Ideone();
j.x = 55; // It just changes new instance of J. It is not changing actual object
}

public static void j(Ideone j){
j.x = 52; // It modifies actual object
}
}

我对此有疑问。对于 j 函数,它修改实际对象。不是通过引用传递吗?我们正在传递对象并在 j 内部修改它。

但我也在函数 f 中做同样的事情。传递对象并修改它。但它并没有修改原始对象。

我对它们之间的行为感到困惑。

根据高票 answer ,我在这两种情况下都传递一个 URL。我正在修改URL中的内容。但在一种情况下所有人都可以看到,但在另一种情况下则不然。

最佳答案

f 方法会覆盖传递给它的引用 j。因此,它无法更改其引用从调用者传递给它的 Ideone 实例的状态。请注意,赋值 j = new Ideone() 不会影响 f 的调用者,因为 Java 传递的是引用变量的值,而不是对其的引用。

j 方法不会覆盖引用,因此它可以修改它所引用的实例的状态。

关于java - 下面的程序是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34657202/

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