Java之路:break、continue和return
阿新 • • 發佈:2018-12-08
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跳出迴圈,但只能跳出一層迴圈。
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);
}
}
}
【結果】
i = 3時,執行第三次迴圈,遇到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);
}
}
【結果】
return關鍵詞有兩方面的用途:一方面指定一個方法返回什麼值,另一方面它會導致當前方法退出,並返回那個值。
如果在返回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));
}
}
【結果】