我在Eclipse中运行以下代码:
ArrayList list = new ArrayList();
ArrayList alist = new ArrayList();
// add some elements ti list
list.add(new StringBuilder("hello"));
list.add(new StringBuilder("2"));
list.add(new StringBuilder("hi"));
list.add(new StringBuilder("this"));
// add some elements to alist
alist.add(4);
alist.add(9);
//get method
StringBuilder a = list.get(3);
a.append(" is a good day");
int b = alist.get(1);
b = 7;
// print the list
System.out.println("LinkedList:" + list);
System.out.println("ArrayList:" + alist);
结果在这里
LinkedList:[hello, 2, hi, this is a good day]
ArrayList:[4, 9]
看起来get方法将list元素的浅表副本(对于StringBuilder)返回到a,但是将深层副本(对于整数而言)返回到b!
为什么会发生? get方法是否返回列表元素的深层或浅层副本?