0

想象一下 Java 中的以下 ArrayList:

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

我想知道在添加新值作为原始类型或包装类时是否有区别:

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

提前致谢!

4

2 回答 2

8

add由于自动装箱/拆箱,没有区别。实际上不要这样做new Integer(12)Integer.valueOf(12)因为它使用轻量级模式并重用已知对象(在 -128、127 范围内)。所以不会创建新对象。

例如有区别remove
因为如果你打算打电话remove(Object)remove(5)就会打电话remove(int index),这可能不是你想要的。如果要删除数字或要删除第五个元素,则
应该这样做。remove((Integer)5)5remove(5)

于 2013-02-16T20:33:45.783 回答
7

当你做u.add(12);编译器重写它u.add(Integer.valueOf(12));u.add(new Integer(12)); 阅读官方教程http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html更有效

于 2013-02-16T20:33:13.490 回答