加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 这个脚本中int和Integer有什么区别?

发布时间:2020-12-15 04:14:29 所属栏目:Java 来源:网络整理
导读: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 listStru
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));

    }

}

我知道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将给出错误.

因此,在一行中 – Integer []是对象的引用数组,而int []本身就是一个对象.

您可以使用此方法进行简单测试:

public static <T> void test(T... args) {
    System.out.println(args.length);
}

然后将此方法称为:

int[] arr = {1,2,3};
Integer[] arr2 = {1,3};

test(arr);   // passing `int[]`. length is 1
test(arr2);  // passing `Integer[]`. length is 3

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读