【发布时间】:2021-11-04 20:21:32
【问题描述】:
我正在尝试了解如何在 Java 中传递参数。例如,我有以下代码:
class Runner{
public static void main(String[] args)
{
Integer test = new Integer(20);
updateObject(test);
System.out.println(test);
}
public static void updateObject(Integer test)
{
test = 50;
}
}
它打印“20”。
但是,如果我像这样使用自己的类而不是 Integer:
import java.util.*;
class Test {
int num;
Test(int x){
num = x;
}
Test(){
num = 0;
}
}
class Runner{
public static void main(String[] args)
{
Test test = new Test(20);
updateObject(test);
System.out.println(test.num);
}
public static void updateObject(Test test)
{
test.num = 50;
}
}
在这种情况下 println 打印“50”。
为什么在第一种情况下我的参数没有改变,但在第二种情况下却被改变了?
【问题讨论】:
-
第一个示例在方法内重新分配了一个引用(使测试点指向不同的整数),因此它在它之外没有任何影响(更改的引用是其他地方使用的引用的副本)。第二个更改对象的实例成员。这看起来与stackoverflow.com/q/40480/217324 非常相似
-
示例 #1 不好,整数是不可变的
标签: java