gpt4 book ai didi

java - 对象中的别名

转载 作者:行者123 更新时间:2023-12-01 13:25:45 25 4
gpt4 key购买 nike

运行函数 foo1 时,为什么这段代码的输出是:15 30 5而不是 15 15 5 ?

我知道对象 v 的指针现在指向对象 va1,因此代码行的输出: System.out.print(v.getI() + "");应该是 15。那为什么是 30 呢?

public class Value
{
private int _i;

public Value()
{
_i=15;
}

public int getI()
{
return _i;
}

public void setI (int i)
{
_i=i;
}

}

public class TestValue
{
public static void foo1()
{
int i=5;
Value v= new Value();
v.setI(10);
foo2(v,i);
System.out.print(v.getI() + " ");
System.out.print(i+ " ");

}

public static void foo2( Value v, int i)
{
v.setI(30);
i=10;
Value va1= new Value();
v=va1;
System.out.print (v.getI() + " ");
}

}

最佳答案

Java 仅支持按值传递。因此,当您将对象“v”传递给方法 foo2 时,将创建引用“v”的副本。因此,当您在 foo2 中设置 v = val1 时,foo2 中的引用副本将被更改,而不是 foo2 中的原始引用“v” >foo1。

关于java - 对象中的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21813933/

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