forEach与for循环 使用break; continue;return;关键字的区别:
forEach 不能使用break,continue关键字,return关键字为跳过本次循环。
for循环中continue为跳过本次循环,break为结束循环。同样return也结束循环,但是结束循环的同时,该方法也会结束,不再执行下一步。
下面记录switch分别在for和forEach中的区别:
switch在for循环中:
List<String> list = List.of("a","b","c");
for(int i = 0;i<list.size();i++){
switch (list.get(i)) {
case "a":
{
System.out.println("return"+i);
return;
}
case "b":{
System.out.println("b"+i);
}
default:
System.out.println("default"+i);
}
System.out.println(1+i+"次循环结束");
}
System.out.println("流程结束");
执行结果为:return0
List<String> list = List.of("a","b","c");
for(int i = 0;i<list.size();i++){
switch (list.get(i)) {
case "a":
{
System.out.println("break"+i);
break;
}
case "b":{
System.out.println("b"+i);
}
default:{
System.out.println("default"+i);
}
System.out.println(1+i+"次循环结束");
}
System.out.println("流程结束");
执行结果:break0
1次循环结束
b1
default1
2次循环结束
default2
3次循环结束
流程结束
List<String> list = List.of("a","b","c");
for(int i = 0;i<list.size();i++){
switch (list.get(i)) {
case "a":
{
System.out.println("continue"+i);
continue;
}
case "b":{
System.out.println("b"+i);
}
default:
System.out.println("default"+i);
}
System.out.println(1+i+"次循环结束");
}
System.out.println("流程结束");
执行结果:continue0
b1
default1
2次循环结束
default2
3次循环结束
流程结束
总结:for循环内使用switch,return将直接结束循环,并结束方法。break;只对switch影响,将不再往下执行,switch内默认执行的方法default不再执行。switch外则没有影响。continue switch不再往下执行,同时也跳过本次循环。
switch在forEach中:
List<String> list = List.of("a","b","c");
list.forEach(
t ->{
switch (t) {
case "a":
{
System.out.println("return:"+t);
return;
}
case "b":{
System.out.println("b");
}
default:{
System.out.println("default:"+t);
}
}
System.out.println(t+"循环结束");
}
);
System.out.println("流程结束");
执行结果:return:a
b
default:b
b循环结束
default:c
c循环结束
流程结束
List<String> list = List.of("a","b","c");
list.forEach(
t ->{
switch (t) {
case "a":
{
System.out.println("break:"+t);
break;
}
case "b":{
System.out.println("b");
}
default:{
System.out.println("default:"+t);
}
}
System.out.println(t+"循环结束");
}
);
System.out.println("流程结束");
执行结果:break:a
a循环结束
b
default:b
b循环结束
default:c
c循环结束
流程结束
总结:forEach使用switch,使用return;switch不再往下执行,同时也跳过本次循环。(和for循环使用continue 一样)使用break;只对switch影响,将不再往下执行,switch内默认执行的方法default不再执行。switch外则没有影响(和for循环一样)。continue ;break;forEach内无法使用。
ps:switch(t) case "a":{} case "b": {}case "c": {break}case "d": {}如果t= b则,从b处开始执行,如果不写break。将执行到c的代码块{}。c处有break 所以不会执行d了。