【发布时间】:2019-03-07 11:49:23
【问题描述】:
我在 Eclipse 中运行以下代码:
ArrayList<StringBuilder> list = new ArrayList<StringBuilder>();
ArrayList<Integer> alist = new ArrayList<Integer>();
// 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方法将列表元素的浅拷贝(在StringBuilder的情况下)返回给a,但将深拷贝(在整数的情况下)返回给b! 为什么会这样? get 方法返回列表元素的深拷贝还是浅拷贝?
【问题讨论】:
-
Is Integer Immutable的可能重复