天天看點

探讨break和continue語句的标簽

程式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);
		}
	}
}
           
探讨break和continue語句的标簽

圖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);
		}
	}
}
           
探讨break和continue語句的标簽

圖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); } } } }

探讨break和continue語句的标簽

圖3

觀察圖3可知,在嵌套的循環中使用帶标簽的break會直接跳出标簽指定的循環體,使用帶标簽的continue會用來結束标簽指定的循環體的目前循環,并進入下一次循環,即僅僅這一次循環結束了,不是所有循環結束了,後邊的循環依舊進行。

總結:

1)不加标簽時,continue和break作用于目前循環體,帶标簽時,作用于标簽指定的循環體。

2)break:語句可以直接強行退出目前的循環,忽略循環體中任何其他語句和循環條件測試。

3)continue:語句用來結束目前循環,并進入下一次循環,即僅僅這一次循環結束了,不是所有循環結束了,後邊的循環依舊進行。