可以将int值存储到Integer数组中吗?
给定一个数组:
Integer[] array = new Integer[10];
以下两个陈述是否相同?
Integer x = new Integer(1);
array[0] = x;
int x = 1;
array[0] = x;
答案 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
出于您的目的,您写的两个示例都可以使用。