黑马程序员技术交流社区

标题: 关于subList方法。 [打印本页]

作者: 寐海流风    时间: 2014-6-11 22:10
标题: 关于subList方法。
本帖最后由 寐海流风 于 2014-6-14 10:33 编辑

自己敲代码的时候遇到个关于subList的问题,简化写在下面(真心等待高手解答):
List<String> list = new ArrayList<String>();
    list.add("abc1");
    list.add("abc2");
    list.add("abc3");
    list.add("abc4");
    List<String> list2 = list.subList(0,2);
    list2.set(0,"abc0");
    System.out.println(list);
    System.out.println(list2);

为什么打印结果是:
[abc0, abc2, abc3, abc4]
[abc0, abc2]
_______________________________
list2.set(0,"abc0");只是修改了list2[0],为什么list[0]也被修改了?
作者: 寐海流风    时间: 2014-6-12 11:14
顶啊,别沉。
作者: yanghu    时间: 2014-6-12 11:32
这只能说明一个问题,subList()方法,它底层是存储着字符串对象的引用地址,并没有复制一个对象。所以才会导致这个现象。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2