学Java遇到一个坑,那就是往ArrayList(别的collection应该也类似)中添加元素时,如果这个元素后面又改变了,之前添加的值也会被改变:
List<String> newString = new ArrayList<>();
String myString = "hello";
newString.add(myString);
System.out.println("newString = %s",newString[0]); //输出 hello}
myString = "world";
System.out.println("currString = %s",newString[0]); //输出 world
//两次打印的会不一样,如果要打印一样,需要用clone
myString = "!";
newString.add(myString.clone());
System.out.println("currString = %s",newString[0]);
System.out.println("currString = %s",newString[1]);
//如果是自定义类的化,用clone需要重载Cloneable 接口,此时要强转并且处理异常。
;
标签:Java,List,System,println,myString,拷贝,newString,out From: https://www.cnblogs.com/drunknbeard/p/17794850.html