Java ArrayList:添加基本类型或其包装类:有什么区别?

时间:2013-02-16 20:29:10

标签: java arraylist primitive

想象一下Java中的以下ArrayList:

ArrayList<Integer> u = new ArrayList<Integer>();

我想知道在将新值添加为基本类型或包装类时是否存在差异:

u.add(new Integer(12));
u.add(12);

提前致谢!

2 个答案:

答案 0 :(得分:8)

由于自动装箱/拆箱,add没有区别。实际上不要new Integer(12)而是Integer.valueOf(12),因为它使用flighweight模式并重用已知对象(在-128,127范围内)。因此不会创建新对象。

例如,remove存在差异 如果您打算致电remove(Object)来电remove(5),则会拨打remove(int index),这可能不是您想要的。
如果要删除第五个元素,如果要删除号码remove((Integer)5)5,则应remove(5)

答案 1 :(得分:7)

u.add(12);编译器将其重写为u.add(Integer.valueOf(12));时,u.add(new Integer(12));效率高于{{1}} 阅读官方教程http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html

的更多内容