-1

次のコードを検討してください。

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;
    }
}

結果はどうなりますか?私はそれを54に解決しましたが、それは正しいものではありません。正しい答えは4 4です。どうしてですか?

4

3 に答える 3

0

最後に、配列baにはb1の2つのインスタンスがあります。どちらもサイズ4です。

于 2012-07-02T19:53:10.493 に答える
0

デバッガーを使用してコードをステップ実行し、途中で結果を実際の結果と比較します。これにより、ソリューションがどこで分岐するかがわかります。

go()を返します{b2,b1}。次に、配列の最初のエントリをに設定しb1、を残します{b1,b1}。これにより、取得した結果が出力されます。

于 2012-07-02T19:53:22.000 に答える
0

このgoメソッドは、ボックスのサイズb1を4に変更し、配列のインデックス1に配置します。次に、mainメソッドもインデックス0に設定します。したがって、配列にはb1、サイズが4のへの2つの参照が含まれます。

于 2012-07-02T19:53:47.417 に答える