想象一下 Java 中的以下 ArrayList:
ArrayList<Integer> u = new ArrayList<Integer>();
我想知道添加新值作为原始类型或包装类时是否有区别:
u.add(new Integer(12));
u.add(12);
提前致谢!
最佳答案
由于自动装箱/拆箱,add
没有任何区别。实际上不要执行 new Integer(12)
而是执行 Integer.valueOf(12)
因为它使用 flighweight 模式并重用已知对象(在 -128, 127 范围内) 。所以不会创建新的对象。
例如,remove
就存在差异。
因为如果您打算调用 remove(Object)
,调用 remove(5)
将调用 remove(int index)
而这可能不是您想要的想要。
如果要删除数字 5
,则应执行 remove((Integer)5)
;如果要删除数字,则应执行 remove(5)
第五个元素。
关于Java 数组列表 : Adding primitive type or its wrapper-class: What's the difference?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14914781/