Java之路:break、continue與return的區別
阿新 • • 發佈:2018-12-14
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));
}
}
【結果】