我了解可以将整数对象添加到ArrayList
类型的Integer
。这对我来说很有意义。像这样:
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(new Integer(3));
但为什么可以添加像int而不是Integer
这样的原始数据类型?像这样:
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(3);
为什么允许?
答案 0 :(得分:16)
这称为autoboxing
。对于具有相应原语的类(例如Long
- &gt; long
,Integer
- &gt; int
),Java将为您处理转换。
应该注意这种行为伴随着一些黑暗的角落:
null
被取消装入基元时,将抛出NullPointerException
,这对于程序员来说可能是意料之外的,因为它看起来像是一个基元抛出异常。