Java:将int存储在Integer数组中

时间:2015-03-23 17:38:42

标签: java arrays

可以将int值存储到Integer数组中吗?

给定一个数组:

Integer[] array = new Integer[10];

以下两个陈述是否相同?

Integer x = new Integer(1);
array[0] = x;

int x = 1;
array[0] = x;

2 个答案:

答案 0 :(得分:2)

它们并非100%相同。但是,以下内容应该是等效的:

Integer x = Integer.valueOf(1); 
array[0] = x;

int x = 1; 
array[0] = x;

请注意,int原语获取autoboxed到Integer包装器类。所以你不是在Integer数组中存储一个int原语,而是一个Integer对象。

你几乎不应该使用Integer构造函数(它总是创建一个新对象),而是使用其静态工厂方法之一或自动装箱(代码较少),这允许缓存实例(因为它们是不可变的)。

答案 1 :(得分:0)

一旦值在数组本身内,它们都是Integer类型的值。如果将原始对象传递给其包装类的实例,则该原始类型为 autoboxed ,这意味着它会自动转换为其包装类的类型。

Integer x = 4; //autoboxing: "4" is converted to "new Integer(4)"

同样,包装类类型在传递给基本类型时可以取消装箱

int x = new Integer(4); //unboxing: "new Integer(4)" is converted to primitive int 4

出于您的目的,您写的两个示例都可以使用。