gpt4 book ai didi

java - 即使使用 "new",对象也共享相同的值

转载 作者:太空宇宙 更新时间:2023-11-04 06:30:17 25 4
gpt4 key购买 nike

我正在尝试做一些非常简单的事情,但我似乎无法让它发挥作用。我正在尝试迭代 ArrayList,但当我将结果输出到终端时,我的 for 循环始终返回相同的值。

这是代码:

import java.util.*;

public class Contact{
public static ArrayList<Contact> contacts = new ArrayList<Contact>();
public static String name;
public static String phoneNumber;
public static String email;
private static int idCounter = 0;
private final int contactID;

public static void main(String[] args){
Contact bob = new Contact("bob","8493483943","jo@g.com");
Contact joe = new Contact("joe","940389439","something@g.com");
ArrayList<Contact> contacts = new ArrayList<Contact>();
contacts.add(bob);
contacts.add(joe);
for (Contact person : contacts) {
System.out.println(person.idCounter);
System.out.println(person.name);
System.out.println(person.phoneNumber);
System.out.println(person.email);
System.out.println();
}
}

public Contact(String name,String phoneNumber,String email){
this.contactID = idCounter++;
this.name = name;
this.phoneNumber = phoneNumber;
this.email = email;
}
}

当我运行代码时,上面的代码总是返回这个:

2
joe
940389439
something@g.com

2
joe
940389439
something@g.com

即使我在 ArrayList 中添加了 2 个不同的对象,它也会返回相同的信息。

当我在 for 循环中执行此操作时:

System.out.println(person);

它返回一个具有不同 id 的联系人对象。

我有点困惑为什么会发生这种情况,因为我假设我没有在这里引用相同的变量或对象,或者我在循环中做错了什么。

如果有人能帮我解释一下发生了什么,那就太好了,谢谢!

最佳答案

您的属性是静态的:姓名、电话号码和电子邮件。删除 static 关键字 [static 关键字生成类级属性] :)

关于java - 即使使用 "new",对象也共享相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26198527/

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