java7新特性for 增强_java5新特性-加强for循环

本文目标是加强for循环和普通for循环的比较。阅读本文大概3-5分钟

刚开始学习编程语言的时候接触了三种循环方式

1. for  常用

2. while  较常用

3 do ... while  不常用

一般的for循环格式

for(int i=0; i <10;i++){

doSomething();

}

for(init ; condition ; increment),共有三个代码块

init 初始化区域

condition 设置判断条件

increment做完循环体内容后执行的代码块

现在看下for循环和加强for循环做同样一件事有何区别(使用集合Collection)

例如:两颗骰子,打印所有可能出现的点数。

数据

Integer []face = {1,2,3,4,5,6};

Integer []face2= {1,2,3,4,5,6,7};//额外多加了一个7,是为了验证容易出现的错误。//将数组转换成集合,Arrays.asList方法只能用对象数组,不能用基本类型数组,会出现逻辑性错误,即集合中只有一个元素,face自身

Collection dot1 =Arrays.asList(face);

Collection dot2 = Arrays.asList(face2);

1. 正常的for循环遍历集合方法。

隐含错误的代码

//循环打印出所有的可能。

for (Iterator i =dot1.iterator(); i.hasNext();) {//Integer tempI = i.next();

for (Iterator j =dot2.iterator(); j.hasNext();) {

System.out.println("(" + i.next() + "," + j.next() + ")");

}

}

不可以在内层循环中调用外层i元素的next()方法

代码中。i.next()方法会将当前游标移到下一节点。即current=next; current.next = next.next

因为,dot2的元素比dot1的元素多。当循环6次后,i.next()没有下一个元素,就会报NoSuchElementException异常

504df29be9a30ae51bdbfaa3efd80577.png

正确的代码,使用临时变量保存 i 的下一节点引用

1 Integer []face = {1,2,3,4,5,6};2 Integer []face2 = {1,2,3,4,5,6,7};//额外多加了一个7,是为了验证容易出现的错误。3 //将数组转换成集合

4 Collection dot1 =Arrays.asList(face);5 Collection dot2 =Arrays.asList(face2);6 //循环打印出所有的可能。

7 for(Iterator i =dot1.iterator();i.hasNext();) {8 Integer tempI =i.next();9 for(Iterator j =dot2.iterator();j.hasNext();) {10 System.out.println("("+tempI+"数据"+j.next()+")");11 }12 }

执行结果,为了更好截图,代码做了换行改动

df7ec422714ccc2ee7e690c76684813e.png

2. 加强for循环

代码比较简洁

for(Integer i:dot1) {for(Integer j : dot2) {

System.out.print("("+i+","+j+")");

}

}

运行结果和上面也是一样的

嵌套循环遍历实现了Iterator接口的类时,代码跟普通for循环有所不同

直接避免的内层循环中i.next造成异常的问题,而且还不用自己创建临时变量

加强for循环好处:简洁性,避免bug

是iterator迭代方式的一种替换。

缺点:

遍历部分想要的内容比较麻烦,比如想要获取第6位到第9位的下标的数据,也需要引入额外变量

获取当前元素的索引值麻烦。

只能遍历实现了Iterator接口的对象或数组

相对于上面的来说,好像普通for循环功能更加强大(……

普通for循环可以控制自己想要的循环条件

可以在特定下标处执行代码

使用方式比较灵活

想不出来了emmm.....

对于使用时,只是需要迭代遍历数据就使用加强for循环吧!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值