【发布时间】:2013-08-15 07:37:43
【问题描述】:
谁能解释一下这个程序是如何执行的?
这是我似乎无法理解其输出的代码:
class Box {
int size;
Box (int s) {
size = s;
}
}
public class Laser {
public static void main(String[] args) {
Box b1 = new Box(5);
Box[] ba = go(b1, new Box(6));
ba[0] = b1;
for(Box b : ba)
System.out.println(b.size + " ");
}
static Box[] go (Box b1, Box b2) {
b1.size = 4;
Box[] ma = {b2, b1};
return ma;
}
}
我运行时的实际输出是 4, 4。但根据我的理解应该是 5, 4。 任何人都可以帮助了解这是如何执行的吗?
【问题讨论】:
-
Is Java "pass-by-reference"? 的可能重复项
-
b1.size引用的对象与使用Box b1 = new Box(5);创建的对象相同 -
理解这一点的最好方法是拿起铅笔和纸,开始画出发生了什么......
-
详细解释请查看我的回答。
标签: java static-methods pass-by-reference call-by-value