我对一件微不足道的事情感到困惑 - 将参数传递给方法并更改它们的值......我最好给你一些代码:
public class Test {
public static void main(String[] args) {
Integer val = new Integer(41);
upd(val);
System.out.println(val);
Man man = new Man();
updMan(man);
System.out.println(man.name);
}
static void upd(Integer val) {
val = new Integer(42);
}
static void updMan(Man man) {
man.name = "Name";
}
static class Man {
String name;
}
}
你能解释一下为什么我传递的 Integer 对象没有更新,而 Man 对象是?Integer 和 Man 对象不是通过引用传递(由于它们的非原始性质)吗?