class person{
   private static int  id = 0;
   private String name = null;
    public  person(String name){
++id;
this.name = name;
}
public int getId(){
return id; 
}
public String getName(){
return name;
}
}public class Linklisttest { /**
 * @param args
 */
public static void locat(int num){

}
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedList linklist = new LinkedList();
        for(int i = 0;i<10;++i){ 
         linklist.add(new person("三年三班 "+i));
        }
        Iterator iterator =  linklist.iterator();
        while (iterator.hasNext()){
         Xiaoprint.xprintln(((person)iterator.next()).getId());
        }         
}
}
注:Xiaoprint是我的工具类负责打印的
这道题的运行结果是
10
10
10
10
10
10
10
10
10
10
不清楚就在这里我的id已经是static类型,每建一个新对象应该递增才对,而这条语句Xiaoprint.xprintln(((person)iterator.next()).getName());就能得到我想要的结果

解决方案 »

  1.   

    static 每个类只有1个
    一大堆对象共用一个。
      

  2.   

    所有的object共有一个id所以当你getid时它就得到的最终id,如果你想把每object有一单独的id那么就的还有一非class变量然后在初始化时用class变量初始化
      

  3.   

    就是说,static的field值是储存在class里的!而不在这个class实例化的对象里。
    所以,所有class实例化出的对象是共用这个field的!
      

  4.   

    改成:
    class person{
    private static int id = 0;
    private int pid;
    private String name = null;
    public person(String name){
    pid = ++id;
    this.name = name;
    }
    public int getId(){
    return pid; 
    }
    public String getName(){
    return name;
    }
    }