Nik*_*Nik 3 java arrays int integer list
import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
public class arraysAsList {
public static void main(String[] args) {
String [] arrayA = {"Box","Sun","Clock","Phone"};
Integer [] arrayB = {21,27,24,7};
List listStructureA = new ArrayList();
List listStructureB = new ArrayList();
listStructureA = Arrays.asList(arrayA);
listStructureB = Arrays.asList(arrayB);
System.out.println("My first list : " + listStructureA);
System.out.println("Sun = " + listStructureA.get(1));
System.out.println("My second list : " + listStructureB);
System.out.println("24 = " + listStructureB.get(2));
}
}
Run Code Online (Sandbox Code Playgroud)
我知道int是一个原始类型,而Integer是一个类.但是在这个脚本中,当我尝试使用int而不是Integer时,我得到'index out of bounds exception'错误.之前我使用int来创建数组,int数组和Integer数组之间的区别是什么?提前致谢.
Arrays.asList(T...)采取varargs.当你传递时Integer[],类型T被推断为Integer,每个元素Integer[]被解压缩为varargs的不同参数.
但是,当你传递一个时int[],因为int它不是一个对象,T所以推断为int[].因此,传递给该方法的是具有值的单个元素数组int[].因此,两种情况下的varargs数量都不同.因此,1当您通过时,访问索引会给您带来错误int[].
因此,在一行中 - Integer[]是对象的引用数组,而int[]它本身就是一个对象.
您可以使用此方法进行简单测试:
public static <T> void test(T... args) {
System.out.println(args.length);
}
Run Code Online (Sandbox Code Playgroud)
然后将此方法称为:
int[] arr = {1, 2, 3};
Integer[] arr2 = {1, 2, 3};
test(arr); // passing `int[]`. length is 1
test(arr2); // passing `Integer[]`. length is 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |