首页 > 代码库 > 关于在集合中加入StringBuffer的问题
关于在集合中加入StringBuffer的问题
/** * 本来以为一个大项目里面的下面这段简单的代码,不会有什么问题,结果却花了我一段时间才找出这个BUG所在,这段代码就是简单的加入两个字符串内容,大家来看看输出来的内容是什么 * */ @Test public void test(){ StringBuffer sb = new StringBuffer(); List list = new ArrayList(); sb.append("第一行数据"); list.add(0,sb); sb.delete(0, sb.length()); sb.append("第二行数据"); list.add(1,sb); System.out.println(list); }
在运行之后,你会发现程序的输出内容是:见末尾,也就是说,list 集合里并不是存放引用的具体值,而是存放这个引用,但是在Java的API里面
public void add(int index,E element)
将指定的元素插入此列表中的指定位置。向右移动当前位于该位置的元素(如果有)以及所有后续元素(将其索引加 1)。
并没有进行详细的说明,而根据程序的输出结果,可以看出,在对集合进行输出之时,list集合才去取得引用所指向的具体的值。([第二行数据, 第二行数据])
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。