gpt4 book ai didi

java - 在java中执行以下列表代码的输出是什么

转载 作者:行者123 更新时间:2023-12-01 17:14:55 25 4
gpt4 key购买 nike

我借助 for 循环在列表中添加了五个对象。我正在 for 循环之外初始化我的对象。在 for 循环的主体中,我正在更改对象 setter 属性并将其添加到列表中。输出是:它将添加五个对象,但即使在为属性设置不同的值之后,它们也具有相同的属性。

看下面的代码

import java.util.ArrayList;
import java.util.List;
import java.util.Random;


public class ASD {
public static void main(String args[]) {
List list = new ArrayList<A>();
System.out.println("Before Insert List is " + list);
A obj = new A();

for (int i = 0; i < 5; i++) {
obj.setA(new Random().nextInt(10));
list.add(obj);
}

System.out.println("After Insert List is " + list);
for (int i = 0; i < 5; i++) {
A prObj = (A) list.get(i);
System.out.println("Values are" + prObj.getA());
}
}
}

class A {
int a;

public int getA() {
return a;
}

public void setA(int a) {
this.a = a;
}

}

如果我在 for 循环中初始化 A 的对象,那么它将添加五个对象并更改对象的属性。谁能解释一下这种行为

最佳答案

您只创建了一个实例,并在 for 循环内对其进行了多次设置。在 for 循环内创建 A 的新实例,不在其之外

for (int i=0;i<5;i++) {
A obj = new A();
obj.setA(new Random().nextInt(10));
list.add(obj);
}

关于java - 在java中执行以下列表代码的输出是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22654255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com