基本类型的数组与包装类型的数组之间转换时会在编译时报错
在Java中自动包装机制不能作用于数组,当用基本类型的数组与包装类型的数组进行相互赋值时会报异常(Type mismatch: cannot convert from int[] to Integer[])
例如:
例子代码如下:
public class Demo1 {
public static void main(String[] args) {
int[] pa = { 1, 2, 3, 4, 5 };
Integer[] wa = pa;//Type mismatch: cannot convert from int[] to Integer[]
Integer[] wb = { 1, 2, 3, 4, 5 };
int[] pb = wb;//Type mismatch: cannot convert from Integer[] to int[]
}
}
基本类型数组与包装类型数组之间的转换
因为基本类型的数组与包装类型之间的数组之间不能互相转换,因此只能通过遍历的形式,使的单个的基本类型与包装类型之间能正常的进行自动装箱(Autoboxing)和自动拆箱(Autounboxing)。
import java.util.Arrays;
public class Demo1 {
public static void main(String[] args) {
int[] pa1 = { 1, 2, 3, 4, 5 };
Integer[] wa1=convert(pa1);
System.out.println("int[]-->Integer[]:"+Arrays.toString(wa1));
Integer[] wa2 = { 1, 2, 3, 4, 5 };
int[] pa2=convert(wa2);
System.out.println("Integer[]-->int[]:"+Arrays.toString(pa2));
}
//Integer[]-->int[]
public static int[] convert(Integer[] wa) {
int[] pa = new int[wa.length];
for (int i = 0; i < wa.length; i++) {
pa[i] = wa[i];//Autounboxing
}
return pa;
}
//int[]-->Integer[]
public static Integer[] convert(int[] pa) {
Integer[] wa = new Integer[pa.length];
for (int i = 0; i < pa.length; i++) {
wa[i] = pa[i];//Autoboxing
}
return wa;
}
}
输出: