A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 寐海流风 中级黑马   /  2014-6-11 22:10  /  1869 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 寐海流风 于 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]也被修改了?

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

4 个回复

倒序浏览
顶啊,别沉。
回复 使用道具 举报
这只能说明一个问题,subList()方法,它底层是存储着字符串对象的引用地址,并没有复制一个对象。所以才会导致这个现象。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马