请教一下continue inner不是终止本次循环吗,为什么还会执行for循环的表达式3,i++,不是直接停止,返回标签位置吗,表达式3在循环体执行完之后才执行呀,按理说循环体都中止了,应该不会往后继续了呀,能不能解释下,请赐教,还有出现break后没有去执行for循环的i++,而在出现continue inner后却执行了for循环的i++,所以这是他们之间的差异还是我对代码的理解不对?这是俩个问题
话不多说上代码
public class age {
public static void main(String[] args) {
int i = 0;
outer: // Can't have statements here
for(; true ;) { // infinite loop
inner: // Can't have statements here
for(; i < 10; i++) {
System.out.println("i = " + i);
if(i == 2) {
System.out.println("continue");
continue;
}
if(i == 3) {
System.out.println("break");
i++; // Otherwise i never
// gets incremented.
break;
}
if(i == 7) {
System.out.println("continue outer");
i++; // Otherwise i never
// gets incremented.
continue outer;
}
if(i == 8) {
System.out.println("break outer");
break outer;
}
for(int k = 0; k < 5; k++) {
if(k == 3) {
System.out.println("continue inner");
continue inner;
}
}
}
}
// Can't break or continue to labels here
}
}
运行结果如下:
i = 0
continue inner
i = 1
continue inner
i = 2
continue
i = 3
break
i = 4
continue inner
i = 5
continue inner
i = 6
continue inner
i = 7
continue outer
i = 8
break outer
这个代码是摘自是wuding梦想成真的一篇博客(已经三年没有发表过动态了)
你看看我这个基础测试:
顺便在我的好久之前的笔记找到的图,你看看,不过没画全,
注意:我这里的表达式1是你的表达式2,我这里的表达式2是判断是否执行break/continue语句,没有把你的表达式3写进去,可以把表达式3理解成那条回往表达式1的线吧。
break:
continue:
以上基础仅供参考,希望对楼主有帮助
break是满足条件时结束整个循环,而continue是满足条件时结束循环中的当前这次循环,进入下一次循环
beak是跳出某个循环,continue是跳出某个循环里的一次循环,还有for循环里的表达式3,在continue时还是会执行的
break是满足条件时结束整个循环,而continue是满足条件时结束循环中的当前这次循环,进入下一次循环