3

我知道可以将 Integer Object 添加到ArrayListtype Integer。这对我来说很有意义。像这样:

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(new Integer(3));

但是为什么可以添加像 int 这样的原始数据类型而不是Integer?像这样:

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(3);

为什么允许??

4

1 回答 1

17

这被称为autoboxing。对于具有相应原语的类(例如Long-> longInteger-> int),Java 将为您处理转换。

应该注意的是,这种行为带有一些阴暗的角落:

  1. 性能惩罚;
  2. 极端情况:当null拆箱成原语时,aNullPointerException将被抛出,这对于程序员来说可能是意料之外的,因为看起来原语正在抛出异常。
于 2013-05-19T16:49:55.040 回答