Java自动装箱

时间:2020-02-23 14:36:08  来源:igfitidea点击:

Java中的自动装箱是Java 1.5中引入的。
自动装箱和拆箱是一种方便的方法,可以将原始数据类型自动转换为相应的Java包装器类,反之亦然。

Java自动装箱

将原始数据类型转换为相应包装器类的对象称为自动装箱。
例如,将int转换为Integer或者将long转换为Long对象。

当原始值是:Java编译器将应用自动装箱:

  • 作为参数传递给需要相应包装类对象的方法。
    例如,可以通过传递int来调用带有Integer参数的方法,java编译器会将int转换为Integer。

  • 分配给相应包装器类的变量。
    例如,将Long对象分配给long变量。

用Java取消装箱

将包装器类型的对象转换为其对应的原始数据类型的操作称为拆箱。

当包装器类的对象是:

  • 作为参数传递给需要相应原始类型值的方法。

  • 分配给相应原始类型的变量。

Java自动装箱示例

这是一个小型Java程序,显示了Java自动装箱和拆箱的示例。

package com.theitroad.util;

import java.util.ArrayList;
import java.util.List;

public class AutoboxingUnboxing {

	public static void main(String[] args) {
		int i = 5;
		long j = 105L;

		//passed the int, will get converted to Integer object at Runtime using
		//autoboxing in java
		doSomething(i);

		List<Long> list = new ArrayList<>();

		//java autoboxing to add primitive type in collection classes
		list.add(j);
	}

	private static void doSomething(Integer in) {
		//unboxing in java, at runtime Integer.intValue() is called implicitly to
		//return int
		int j = in;

		//java unboxing, Integer is passed where int is expected
		doPrimitive(in);
	}

	private static void doPrimitive(int i) {

	}
}

注意:始终依赖自动装箱不是一个好主意,有时,当方法重载时,它可能导致编译器错误,即方法不明确。