【发布时间】:2011-03-20 20:10:14
【问题描述】:
我希望有人可以为我澄清这里发生的事情。我在整数类中挖了一会儿,但因为整数 覆盖 + 运算符我无法弄清楚出了什么问题。我的问题在于这一行:
Integer i = 0;
i = i + 1; // ← I think that this is somehow creating a new object!
这是我的推理: 我知道java是按值传递的(or pass by value of reference),所以我认为在下面的例子中,整数对象应该每次递增。
public class PassByReference {
public static Integer inc(Integer i) {
i = i+1; // I think that this must be **sneakally** creating a new integer...
System.out.println("Inc: "+i);
return i;
}
public static void main(String[] args) {
Integer integer = new Integer(0);
for (int i =0; i<10; i++){
inc(integer);
System.out.println("main: "+integer);
}
}
}
这是我的预期输出:
公司:1 主要:1 公司:2 主要:2 公司:3 主要:3 公司:4 主要:4 公司:5 主要:5 公司:6 主要:6 ...这是实际输出。
公司:1 主要:0 公司:1 主要:0 公司:1 主要:0 ...为什么会这样?
【问题讨论】:
标签: java integer pass-by-reference