Java共有三种for循环方式:
- fori
- foreach
- Stream.foreach
for (int i = 0; i < arrayList.size(); i++) {
// dosomething
}
fori这种方式是Java最早的for循环方式,由于Java语法糖的不断完善,以及JDK 8的出现,是得此种方式大多数出现在教条的大学课本上,在实际的企业开发中用的较少,目前阿里巴巴的代码检测插件也会提示可以将fori的形式转换为foreach的形式。
foreachfor (String s : arrayList) {
// dosomething
}
即增强for循环,这种方式是第一种fori的语法糖,在编译后,对应的foreach便会自动转换为fori的形式。
Stream.foreacharrayList.forEach(array -> {
// dosomething
});
此种方式是JDK 1.8之后随lambda表达式出现的for循环方式,代码更加简洁,并且可配合其他新特性使用更少的代码、以最简单的形式完成复杂操作,但是使用本方式要注意return、break并不能完成在前两者的目的。
代码测试定义四个元素的List列表,当循环到值为hello1时输出并返回。
ListarrayList = new ArrayList (); arrayList.add("hello"); arrayList.add("hello1"); arrayList.add("hello2"); arrayList.add("hello3"); //① 使用fori的形式 for (int i = 0; i < arrayList.size(); i++) { String s = arrayList.get(i); System.out.println(s); if (s.equals("hello1")) { break; } } for (int i = 0; i < arrayList.size(); i++) { String s = arrayList.get(i); System.out.println(s); if (s.equals("hello1")) { return; } } //输出: hello hello1 for (String s : arrayList) { System.out.println(s); if (s.equals("hello1")) { break; } } //② 使用增强for循环的方式 for (String s : arrayList) { System.out.println(s); if (s.equals("hello1")) { return; } } //输出 hello hello1 //③ 使用Stream.foreach的形式 arrayList.forEach(array -> { System.out.println(array); if (array.equals("hello1")) { break; } }); arrayList.forEach(array -> { System.out.println(array); if (array.equals("hello1")) { return; } }); //输出: 无输出,编译报错,在Stream.foreach中,无法使用break关键字. List list = Arrays.asList("123", "456", "789", "115"); list.forEach(element -> { if (element.equals("456")) { // 跳出本次循环 return; } System.out.println(element); }); } //输出: 123 789 115
break :跳出所在的当前整个循环,到循环外层代码继续执行
continue: 跳出本次循环,到下一个迭代循环
return : 直接返回方法,当前方法的后续代码将都不会被执行
注意:在Stream.foreach中,return的作用相当于普通for循环中的continue,即:跳出本次循环,进行下一次,所以在foreach中,无论返回条件是什么,都会将List的每一条信息走完。



