帮看下java代码

来源:百度知道 编辑:UC知道 时间:2024/06/07 07:00:25
labeOne:for(int i=0;i<4;i++){
labeOne:for(int j=0;j<4;j++){
if(i==2)continue labeOne;
if(i==3)break labeOne;
if(j==2)continue labeTwe;
if(j==3)break; //等价于break labeTwo
System.out.println("i="+i+" j="+j);
}
System.out.println("i="+i)
}

执行结果是i=0 j=0
i=0 j=1
i=0
i=1 j=0
i=1 j=1
i=1
为什么是这个结果?
注:答明白了我再加分,请谅解,发了很多次了但是都没得到想要的答案
需要详细的,比如有两行 Ststem.out.println 代码~~ ; 比如j和i的值不一样。
最好能把每次取值给我说一下,请高手别烦,诚恳要求,谢谢,一定追加高分

第一次labeOne的for循环i=0;
labetwe开始循环,i=0 j=0(打印); i=0 j=1(打印);(i=0 j=2)这时j=2了,执行if(j==2)continue labeTwe;
程序不向下执行了,跳到labeTwe处继续开始下次循环,这时(i=0 j=3),由于j=3所以执行if(j==3)break;
程序跳转出内循环了,向下执行System.out.println("i="+i);
执行结束后,程序又开始从头执行第二次labeOne循环。
第二次labeOne的for循环i=1;
原理同上
第三次labeOne的for循环i=2;
执行到if(i==2)continue labeOne;时直接跳到labeOne标志处继续第四次labeOne循环,下面的打印语句没执行到所以什么也没输出。
第四次labeOne的for循环i=3;
执行到if(i==3)break labeOne;时跳出labeOne循环,结束。

一般continue会退回最内层的循环的开头,并继续执行。
带标签的continue会到达标签的位置,并重新进入紧接着在那个表现后面的循环。如continue labeTwo;
一般的break会终端并跳出当前的循环。
带标签的break会终端并跳出标签所指的循环。

注意看这里 continue labeOne; 当i == 2时,整个程序会回到labeOne处并继续执行for语句 此时i将变成3,便会出发内层循环的break labeOne;。触发这个语句程序会终止所有循环回到labeOne。你要记住一点,这里也是java中goto语句需要理解的一点就是,break 到一个外层标签,其实就相当于停止了此嵌套语句。也就是说你break到labeOne处就是正式终止了嵌套,它会跳过嵌套语句结束程序的。