繁体   English   中英

将整数添加到ArrayList时

[英]When adding an integer to ArrayList

我在这里有一个非常愚蠢的问题。 当我们将一个int值添加到ArrayList时,它将创建一个具有该int值的新Integer对象吗? 例如:

int a = 1;
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(a);

在上面的代码中,“ a”是具有值1的原始类型,“ list”是包含Integer类型元素的数组列表。 因此,在将“ a”添加到“列表”时,“列表”如何将“ a”视为整数?

a 装箱Integer 通过链接,

自动装箱是Java编译器在原始类型及其对应的对象包装器类之间进行的自动转换。

是否创建新的Integer对象取决于要添加int的值。 JVM具有一个覆盖一系列公共值的预制对象的缓存,如果该值在该范围内,它将使用现有的缓存对象而不是创建一个新的对象。

对于int类型, Java语言规范要求此高速缓存必须覆盖从-128到127(含)之间的所有数字。 JVM实现可以选择是否在此缓存中包含其他值。

int a = 1;
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(a);

最后一行由编译器自动转换为:

list.add(Integer.valueOf(a));

Integer.valueOf是一种方法,该方法可以创建一个具有相同值的新Integer对象,或者重用已经存在的对象。 所得对象与变量a无关,只是它表示相同的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM