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 类将随机生成两个双精度数,然后我尝试按照上面的代码创建一个对向量,两个输出在向量初始化时产生,一个是在向量 Pairs 之后制作。为什么结果不同,输出的第二部分只是重复相同的元素,但它们应该是相同的。输出是:

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

您的第二个循环显示了在第一个循环中最后创建的对。您可能将 Pair 字段设为静态,这意味着所有 Pair 实例共享一个唯一版本。静态字段属于定义它的类。非静态字段属于类的实例。

阅读有关此主题的 Java 教程

于 2013-01-28T22:44:48.243 回答