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 类的 vector ,Pair 类会随机生成两个 double 字,然后我尝试按照上面的代码创建一个对的 vector ,两个输出是在 vector 初始化时产生的,一个是在初始化之后产生的 vector 对就完成了。为什么结果不同,输出的第二部分只是重复相同的元素,但它们应该是相同的。 输出为:
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]
最佳答案
第二个循环显示在第一个循环中最后创建的对。您可能将 Pair 字段设为静态,这意味着所有 Pair 实例共享一个唯一的版本。静态字段属于定义它的类。非静态字段属于该类的实例。
关于java - Java中初始化一个Vector对象,总是不对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14572562/