zoukankan      html  css  js  c++  java
  • java中List的add方法添加对象时都是最后的一条记录

    list中添加对象

     1 import java.util.ArrayList;
     2 import java.util.List;
     3 public class ListTest{
     4     public static void main(String [] args)
     5     {
     6         Cat cat1=new Cat("hello");
     7         Cat cat2=new Cat("java");
     8         Cat cat3=new Cat("world");
     9         List<Cat> catList=new ArrayList<>();
    10         catList.add(cat1);
    11         catList.add(cat2);
    12         catList.add(cat3);
    13 
    14         Cat cat4=new Cat();
    15         List<Cat> newcatList=new ArrayList<>();
    16         for(int j=0;j<catList.size();j++){
    17             cat4.setterName(catList.get(j).getterName()==null?"":catList.get(j).getterName());
    18             newcatList.add(cat4);
    19             System.out.println("NO"+j+". address in memory"+newcatList.get(j));
    20         }
    21         for(int i=0;i<catList.size();i++)
    22         {
    23             System.out.println("when define the Class Cat outside the foreach");
    24             System.out.print(newcatList.get(i).name);
    25             System.out.println();
    26         }
    27     }
    28 }
    29 
    30 class Cat{
    31     String name;
    32     Cat(){
    33         
    34     }
    35     Cat(String name){
    36         this.name=name;
    37     }
    38     public void setterName(String name){
    39         this.name =name;
    40     }
    41     public String getterName(){
    42         return this.name;
    43     }
    44 }

    运行上诉代码,可以看到每次加入到list中的都是同一个对象的地址。

    查看源代码

    我们传递给add方法的是猫类的引用,所以传的是一个内存地址,在for循环外部定义一个对象的引用,在for循环内我们没有改变过引用的指向,所以添加到list中的就是同一个对象的地址,如果希望传递不同的对象,则需要在for循环内部声明并创建新的猫类对象即可

  • 相关阅读:
    取模和取余详解
    如何上传图片到博客园的文章中?
    Java并发关键字Volatile 详解
    MySQL查询基础
    MySQL基础
    Access denied for user 'root'@'localhost' Could not obtain connection
    获取和设置select的option值
    如何将long类型的时间变量转变为标准时间
    【Java】对文件或文件夹进行重命名
    安装GlassFish4 报错:unsupported major.minor version 51.0
  • 原文地址:https://www.cnblogs.com/raychou1995/p/10065918.html
Copyright © 2011-2022 走看看