从方法返回一个数组引用变量?

时间:2012-07-02 19:47:08

标签: java

请考虑以下代码:

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,那怎么来的?

3 个答案:

答案 0 :(得分:0)

最后,数组ba有两个b1实例。两者都是4号。

答案 1 :(得分:0)

使用调试器逐步执行代码,将结果与实际结果进行比较。这将告诉您解决方案的分歧!

go()返回{b2,b1}。然后,您将数组中的第一个条目设置为b1,并留下{b1,b1},这将打印您获得的结果。

答案 2 :(得分:0)

go方法会将b1框的大小更改为4,并将其放在数组中的索引1处。然后main方法也将它设置为索引0.因此数组包含两个对b1的引用,其大小为4.