1. 程式人生 > >Java之路:break、continue與return的區別

Java之路:break、continue與return的區別

1、不帶標籤break

public class BCR {
	public static void main(String[] args) {
		int i, j;
		for(i = 1; i < 10; i++) {
			for(j = 1; j < 10; j++) {
				if(j%3 == 0)
					break;	// 跳出內層迴圈
				System.out.println("j = " + j);
			}
			System.out.println("迴圈中斷,跳出內層迴圈:j = " + j);
			if(i%3 == 0)
				break
; // 跳出外層迴圈 System.out.println("*********i = " + i + "**********"); } System.out.println("迴圈中斷,跳出內外迴圈:i = " + i); } }

【結果】
在這裡插入圖片描述

break:跳出當前迴圈;但是如果是巢狀迴圈,則只能跳出當前的這一層迴圈,只有逐層break才能跳出所有迴圈。

2、帶標籤break

public class BCR {

	public static void main(String[] args) {
		int i, j, k;
		for(i = 0
; i < 2; i++) { System.out.println("外層迴圈:i = " + i); loop: // 標籤 for(j = 0; j < 3; j++) { System.out.println("中層迴圈:j = " + j); for(k = 0; k < 10; k++) { System.out.println("內層迴圈:k = " + k); break loop; // 跳出標籤 } } } } }

【結果】
在這裡插入圖片描述
【結果分析】

當程式執行到 break loop; 後,跳出中層迴圈,執行外層迴圈剩餘程式碼。

3、不帶標籤continue

作用:結束本次迴圈。

public class BCR {
	public static void main(String[] args) {
		for(int i = 1; i < 5; i++) {
			if(i == 3)
				continue;
			System.out.println("第" + i + "次迴圈:i = " + i);
		}
	}
}

【結果】
在這裡插入圖片描述

continue:終止當前迴圈,但是不跳出迴圈(在迴圈中continue後面的語句是不會執行了),繼續往下根據迴圈條件執行迴圈。

4、帶標籤continue

public class BCR {
	public static void main(String[] args) {
		int i, j, k;
		for(i = 0; i < 2; i++) {
			System.out.println("外層迴圈:i = " + i + "*****************");
			loop:
			for(j = 0; j < 3; j++) {
				System.out.println("中層迴圈:j = " + j);
				for(k = 0; k < 10; k++) {
					System.out.println("內層迴圈:k = " + k);
					continue loop;
				}
			}
		}
	}
}

【結果】
在這裡插入圖片描述

程式的流程在遇到continue之後,立即結束本次迴圈,跳到標籤所在迴圈層次中,進行下一輪迴圈。本例中,標籤在中層迴圈,遇到continue後,跳到中層迴圈處,開始執行下一輪的中層迴圈。
而在帶標籤的break迴圈中,跳到標籤後並不再執行剩餘的中層迴圈,而是直接開始執行下一次的外層迴圈。

型別 作用
不帶標籤continue 退回最內層迴圈的開關,並繼續執行
帶標籤continue 到達標籤位置,並重新進入緊接在那個標籤後面的迴圈
不帶標籤break 中斷並跳出當前迴圈
帶標籤break 中斷並跳出標籤所指的迴圈

5、return

將不帶標籤的break示例最內層的break換成return:

public class BCR {
	public static void main(String[] args) {
		int i, j;
		for(i = 1; i < 10; i++) {
			for(j = 1; j < 10; j++) {
				if(j%3 == 0)
					return;	
				System.out.println("內層迴圈:j = " + j);
			}
			System.out.println("迴圈中斷,跳出內層迴圈:j = " + j);
			if(i%3 == 0)
				break;	// 跳出外層迴圈
			System.out.println("*********i = " + i + "**********");
		}
		System.out.println("迴圈中斷,跳出內外迴圈:i = " + i);
	}
}

【結果】
在這裡插入圖片描述

(1)return 從當前的方法中退出,返回到該呼叫的方法的語句處,繼續執行。
(2)return 返回一個值給呼叫該方法的語句,返回值的資料型別必須與方法的宣告中的返回值的型別一致。
(3)return後面也可以不帶引數,不帶引數就是返回空,其實主要目的就是用於想中斷函式執行,返回呼叫函式處。
(4)return關鍵詞有兩方面的用途:一方面指定一個方法返回什麼值,另一方面它會導致當前方法退出,並返回那個值。
(5)如果在返回void方法中沒有return語句,那麼在該方法的結尾處會有一個隱式的return,因此在方法中並非總是必須要有一個return語句。

public class BCR {
	public static int test(int a, int b) {
		if(a > b)
			return 1;	// 退出當前方法,並返回1
		else if(a < b)
			return -1;	// 退出當前方法,並返回-1
		else
			return 0;	// 退出當前方法,並返回0
	}
	public static void main(String[] args) {
		System.out.println(test(10, 5));
		System.out.println(test(5, 10));
		System.out.println(test(5, 5));
	}
}

【結果】
在這裡插入圖片描述