增强for遍历集合

贺志营
Java领域优质创作者
2019-09-19 05:40:39
ArrayList<Integer> arr = new ArrayList<>(); arr.add(1); 对于该集合用增强应该如何遍历,下面方法有何区别呢 for (Integer a : arr) { System.out.print(a + " "); } for (int a : arr) { System.out.print(a + " "); }
...全文
169 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
arr.add(1);中1是基本数据类型,compile之后变成 arr.add(Integer.valueOf(1));这就是自动装箱的问题,还有一点:ArrayList的循环一般不用iter,因为ArrayList实现RandomAccess接口,普通的循环遍历效率更高。
贺志营 2019-09-19
  • 打赏
  • 举报
回复
引用 2 楼 瘦死的黑骆驼 的回复:
jdk5之后就有了自动拆装箱了,其实都是语法糖,你可以看下编译后的代码,比如Integer i = 10;编译后的其实是Integer i= Integer.valueof(10)
刚刚我试了下在.java文件中Integer i = 10;编译后的.class文件中也是Integer i = 10;
贺志营 2019-09-19
  • 打赏
  • 举报
回复
引用 3 楼 Kevin.Y.K 的回复:
试试arr.add(null);然后再用两种方法遍历,你就知道区别了
刚刚试了下,Integer可以遍历null,int会报异常
贺志营 2019-09-19
  • 打赏
  • 举报
回复
引用 1 楼 qybao 的回复:
int a 会自动拆箱
Integer和int的转换是个一个拆箱装箱的概念,如果不理解可以自己百度或谷歌脑补一下
感谢,了解了自动拆封装
Kevin.Y.K 2019-09-19
  • 打赏
  • 举报
回复
试试arr.add(null);然后再用两种方法遍历,你就知道区别了
瘦死的黑骆驼 2019-09-19
  • 打赏
  • 举报
回复
jdk5之后就有了自动拆装箱了,其实都是语法糖,你可以看下编译后的代码,比如Integer i = 10;编译后的其实是Integer i= Integer.valueof(10)
qybao 2019-09-19
  • 打赏
  • 举报
回复
int a 会自动拆箱
Integer和int的转换是个一个拆箱装箱的概念,如果不理解可以自己百度或谷歌脑补一下

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧