0
Vector<Pair> Pairs = new Vector<Pair>();
for (int i=0; i!= Size; i++){
        Pair p = new Pair();
        Pairs.add(p);
        System.out.println(i+ " "+ Pairs.get(i).Pair); // first output
    }

     for(int i=0; i!=Pairs.size();i++){
            System.out.println("p"+ i+ " "+ Pairs.get(i).Pair); // second output

    }

Pair クラスのベクトルを初期化すると、Pair クラスは 2 つの倍精度数をランダムに生成します。次に、上記のコードのようにペアのベクトルを作成しようとします。ベクトルが初期化されているときに 2 つの出力が生成され、1 つはベクトル ペアの後に生成されます。作られています。なぜ結果が異なるのか、出力の2番目の部分は同じ要素を繰り返すだけですが、それらは同じであるはずです。出力は次のとおりです。

0 [-0.9771848260519362, 0.3677255241044455]
1 [-0.453064196696608, 0.10266228385031217]
2 [0.7337531470828571, -0.9331922628126463]
3 [-0.8083142272953654, -0.8923373383889719]
4 [0.19338350002773197, 0.8060945513704245]
5 [0.01753932066182662, 0.4739045577520977]
6 [-0.10060179118660373, 0.5392480353575093]
7 [0.01970274932747107, 0.4450926528405188]
8 [-0.7520808447905654, -0.4791789391059751]
9 [0.4907563252803737, 0.7654845250011753]
p0 [0.4907563252803737, 0.7654845250011753]
p1 [0.4907563252803737, 0.7654845250011753]
p2 [0.4907563252803737, 0.7654845250011753]
p3 [0.4907563252803737, 0.7654845250011753]
p4 [0.4907563252803737, 0.7654845250011753]
p5 [0.4907563252803737, 0.7654845250011753]
p6 [0.4907563252803737, 0.7654845250011753]
p7 [0.4907563252803737, 0.7654845250011753]
p8 [0.4907563252803737, 0.7654845250011753]
p9 [0.4907563252803737, 0.7654845250011753]
4

1 に答える 1

2

2 番目のループは、最初のループで最後に作成されたペアを示しています。おそらく、Pair フィールドを静的にしました。これは、すべての Pair インスタンスが一意のバージョンを共有することを意味します。静的フィールドは、それが定義されているクラスに属します。非静的フィールドは、クラスのインスタンスに属します。

このトピックに関する Java チュートリアルを読んでください。

于 2013-01-28T22:44:48.243 に答える