public class Demo
{
public static void main(String []args)
{
int i = 0, j = 5;
tp: for (;;)
{
i++;
cc:for(;;)
{
if(i > j--)
break tp;
}
}
System.out.println("i = " + i + ", j = "+ j);
}
{
public static void main(String []args)
{
int i = 0, j = 5;
tp: for (;;)
{
i++;
cc:for(;;)
{
if(i > j--)
break tp;
}
}
System.out.println("i = " + i + ", j = "+ j);
}
}
结果:i=1,j=-1
代码中tp:for(;;)可以分为两部分来看,“tp:”相当于一个标签(lable)与之后break tp;相组合使用。该组合的功能即为了跳出多重循环,当运行到break tp;时,程序自动跳出标签tp所标记的for循环,继续执行该for循环之后的代码(不再执行该循环)。for(;;)为简单的for循环,但其中为三个空语句即死循环。
该代码还有一个隐含的陷阱 if(i > j--) 由于自减在变量j之后所以先进性逻辑判断再进行减一操作,所以做后的j值不是0,而是1。