请考虑以下代码:
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.print(b.size + " ");
}
}
static Box[] go(Box b1, Box b2) {
b1.size = 4;
Box[] ma = {b2, b1};
return ma;
}
}
结果如何? 我解决它是5 4但它不是正确的,正确的答案是4 4,那怎么来的?
答案 0 :(得分:0)
最后,数组ba
有两个b1实例。两者都是4号。
答案 1 :(得分:0)
使用调试器逐步执行代码,将结果与实际结果进行比较。这将告诉您解决方案的分歧!
go()
返回{b2,b1}
。然后,您将数组中的第一个条目设置为b1
,并留下{b1,b1}
,这将打印您获得的结果。
答案 2 :(得分:0)
go
方法会将b1
框的大小更改为4,并将其放在数组中的索引1处。然后main方法也将它设置为索引0.因此数组包含两个对b1
的引用,其大小为4.