程式1源代碼如下:
public class BreakTest
{
public static void main(String[] args)
{
int a = 0;
outer:
System.out.println(a);
for(int i = 0; i < 6; i++)
{
if(i == a)
continue outer;
System.out.println(i);
}
}
}
圖1
在編譯時會報錯,見圖1所示,這是因為在Java中标簽必須放在希望跳出的最外層循環之前,并且必須緊跟一個冒号。
程式2源代碼如下:
public class BreakTest
{
public static void main(String[] args)
{
System.out.println("============帶标簽循環不嵌套============");
System.out.println("continue标簽");
outer1:
for(int i = 0; i < 10; i++)
{
if(i == 5)
continue outer1;
System.out.println("inner1->" + i);
}
System.out.println("break标簽");
outer2:
for(int i = 0; i < 10; i++)
{
if(i == 5)
break outer2;
System.out.println("inner2->" + i);
}
System.out.println("============不帶标簽循環不嵌套============");
System.out.println("continue");
for(int i = 0; i < 10; i++)
{
if(i == 5)
continue;
System.out.println(i);
}
System.out.println("break");
for(int i = 0; i < 10; i++)
{
if(i == 5)
break;
System.out.println(i);
}
}
}
圖2 觀察圖2可知,在不嵌套的循環中使用帶标簽的break和continue與使用不帶标簽時效果是一樣的。
程式3源代碼如下:
public class BreakTest { public static void main(String[] args) { outer1: for(int j = 0; j < 2; j++) { System.out.println("============帶标簽循環嵌套============"); System.out.println("break标簽"); for(int i = 0; i < 10; i++) { if(i == 5) break outer1; System.out.println("inner1->" + i); } } outer2: for(int j = 0; j < 2; j++) { System.out.println("============帶标簽循環嵌套============"); System.out.println("continue标簽"); for(int i = 0; i < 10; i++) { if(i == 5) continue outer2; System.out.println("inner2->" + i); } } } }
圖3
觀察圖3可知,在嵌套的循環中使用帶标簽的break會直接跳出标簽指定的循環體,使用帶标簽的continue會用來結束标簽指定的循環體的目前循環,并進入下一次循環,即僅僅這一次循環結束了,不是所有循環結束了,後邊的循環依舊進行。
總結:
1)不加标簽時,continue和break作用于目前循環體,帶标簽時,作用于标簽指定的循環體。
2)break:語句可以直接強行退出目前的循環,忽略循環體中任何其他語句和循環條件測試。
3)continue:語句用來結束目前循環,并進入下一次循環,即僅僅這一次循環結束了,不是所有循環結束了,後邊的循環依舊進行。