Gan*_*row 24 java reference-type primitive-types
在哪种情况下,您应该使用原始类型(int)或引用类型(Integer)?
这个问题引起了我的好奇心.
coo*_*ird 26
在哪种情况下,您应该使用原始类型(
int)或引用类型(Integer)?
根据经验,int除非我必须使用包装基元的类,否则我将使用基元(例如).
其中一个案例是必须使用包装类,例如Integer在使用泛型的情况下,因为Java不支持使用基本类型作为类型参数:
List<int> intList = new ArrayList<int>(); // Not allowed.
List<Integer> integerList = new ArrayList<Integer>(); // Allowed.
Run Code Online (Sandbox Code Playgroud)
并且,在许多情况下,我将利用自动装箱和拆箱,因此我不必显式执行从基元到其包装类的转换,反之亦然:
// Autoboxing will turn "1", "2", "3" into Integers from ints.
List<Integer> numbers = Arrays.asList(1, 2, 3);
int sum = 0;
// Integers from the "numbers" List is unboxed into ints.
for (int number : numbers) {
sum += number;
}
Run Code Online (Sandbox Code Playgroud)
另外,作为补充说明,当从基元转换为其包装类对象时,并且不需要对象的唯一实例时,请使用valueOf包装器方法提供的方法,因为它执行缓存并为特定值返回相同的实例,从而减少创建的对象数:
Integer i1 = Integer.valueOf(1); // Prefer this.
Integer i2 = new Integer(1); // Avoid if not necessary.
Run Code Online (Sandbox Code Playgroud)
有关这些valueOf方法的更多信息,该方法的API规范Integer.valueOf可以作为这些方法在基元的包装类中的行为的参考.