集合有时会将int转换为整数吗?

时间:2012-01-31 20:34:21

标签: java

我正在读某个地方,即使我使用int原语,将它们添加到某些类型的集合也可能导致从int转换为整数。

这是什么情况?

5 个答案:

答案 0 :(得分:6)

Java集合只能包含对象。因此,在存储它们之前,所有集合都将Autobox任何原始类型传递给它们的等效对象(盒装)形式。因此int基元将在存储到集合中之前转换为Integer

答案 1 :(得分:1)

Java泛型并要求它们的类型是一个成熟的对象,这些原语显然不是。请注意,引入泛型之前的集合与Object一起使用,因此它们也需要完整的对象。 Java还引入了自动装箱和自动拆箱功能,使这一要求不那么痛苦,这意味着当你传递方法需要int的{​​{1}}时,适当的Integer会使用正确的值自动创建。

答案 2 :(得分:0)

自Java 5 以来,它被称为auto-boxing并且所有集合执行此。它是从int原语到java.lang.Integer包装类(不是你在帖子中提到的整数)。

答案 3 :(得分:0)

Java guide on autoboxing说明了这一点:

  

...您不能将int(或其他原始值)放入集合中。集合只能保存对象引用,因此您必须使用框   原始值进入适当的包装类

答案 4 :(得分:0)

由于JDK的集合在内部将数据保存为java.lang.Object引用(或对象数组),因此它们都必须以盒装/包装形式存储值。

如果您确实希望减少专用集合的内存占用量,请考虑使用Trove,它具有将数据存储在基本数组中的专用实现。