我只是在做塞拉 - 贝茨SCJP学习指南,我想知道有关的以下问题:标记的break语句...其中未来
public class Wind {
public static void main(String[] args) {
foreach:
for(int j=0; j<5; j++) {
for(int k=0; k< 3; k++) {
System.out.print(" " + j);
if(j==3 && k==1) break foreach; //1
if(j==0 || j==2) break;
}
}
}
}
当k的值等于1,打破的foreach被执行(在第1行),迭代的确切位置在这之后,我脑海中是否现在退出整个循环。下一个迭代点在哪里?如果外部循环退出,还有什么进一步的迭代? 研究书中给出的答案是0111233.我看到它的方式,在整个循环退出之前只打印01。不是?
您是否尝试过执行它?如果你执行它,你所有的问题都会得到解决。 –
是的,而0111233是我得到的。所以考虑到这一点,在foreach运行结束并执行返回到外部循环@Santosh的开始之后,j的值必须保持为1,这是否为真,外部循环的迭代是否如continue语句那样发生?当j保持为1时,内部循环会再发生两次迭代,在break foreach点之前打印添加到01的11? –
@ donoughsugre ..不,这是不正确的。你的'break foreach'只会执行一次,然后它会突破你的外部循环,从而停止迭代。请参阅[我的答案](http://stackoverflow.com/a/13311676/1679863),我已经发布了完整的逐步迭代。 –