我正在尝试做一些非常简单的事情,但我似乎无法使其工作。我试图遍历一个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","[email protected]");
Contact joe = new Contact("joe","940389439","[email protected]");
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
[email protected]
2
joe
940389439
[email protected]
它返回即使我已经添加了2个不同的对象到相同的信息ArrayList。
当我做这里面的for循环:
System.out.println(person);
它返回不同的ID的一个联系人对象。
我有点困惑,为什么这会发生,因为我假设我没有在这里引用相同的变量或对象,或者我在循环中做错了什么。
如果有人可以帮我解释一下会发生什么,那很好,谢谢!
你的第4行'public static ArrayList contacts = new ArrayList ();''应该被删除,因为你要重新声明它。 –
2014-10-05 00:42:11
@AnubianNoob即使我删除它,它也会返回相同的值 – Jamaal 2014-10-05 00:43:55