ArrayList<Integer> arr = new ArrayList<>();
arr.add(1);
对于该集合用增强应该如何遍历,下面方法有何区别呢
for (Integer a : arr) {
            System.out.print(a + " ");
        }
for (int a : arr) {
            System.out.print(a + " ");
        }

解决方案 »

  1.   

    int a 会自动拆箱
    Integer和int的转换是个一个拆箱装箱的概念,如果不理解可以自己百度或谷歌脑补一下
      

  2.   

    jdk5之后就有了自动拆装箱了,其实都是语法糖,你可以看下编译后的代码,比如Integer i = 10;编译后的其实是Integer i= Integer.valueof(10)
      

  3.   

    试试arr.add(null);然后再用两种方法遍历,你就知道区别了
      

  4.   

    刚刚试了下,Integer可以遍历null,int会报异常
      

  5.   

    刚刚我试了下在.java文件中Integer i = 10;编译后的.class文件中也是Integer i = 10;
      

  6.   

    arr.add(1);中1是基本数据类型,compile之后变成 arr.add(Integer.valueOf(1));这就是自动装箱的问题,还有一点:ArrayList的循环一般不用iter,因为ArrayList实现RandomAccess接口,普通的循环遍历效率更高。