日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 跳转语句

發布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 跳转语句 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java 支持 3 種跳轉語句:break,continue?和return 。這些語句把控制轉移到程序的其他部分。下面對每一種語句進行討論。?


注意:除了這里討論的跳轉語句,Java 還支持另一種能改變你程序執行流程的方法:通過異常處理。異常處理提供了一種結構化的方法,通過該方法可以使你的程序捕獲并處理運行時刻錯誤。它由下列五個關鍵字來控制:try,catch,throw,throws,和 finally 。實質上,異常處理機制允許你的程序完成一個非局部的分支跳轉。由于異常處理是一個大話題,我們將專門討論。?

5.3.1 使用break 語句?
在Java 中,break語句有3種作用。第一,你已經看到,在switch語句中,它被用來終止一個語句序列。第二,它能被用來退出一個循環。第三,它能作為一種“先進”的goto 語句來使用。下面對最后 2種用法進行解釋。?

使用break 退出循環?

可以使用break 語句直接強行退出循環,忽略循環體中的任何其他語句和循環的條件測試。在循環中遇到break語句時,循環被終止,程序控制在循環后面的語句重新開始。下面是一個簡單的例子:?

// Using break to exit a loop.?
class BreakLoop {?
public static void main(String args[]) {?
for(int i=0; i<100; i++) {?
if(i == 10) break; // terminate loop if i is 10?
System.out.println("i: " + i);?
}?
System.out.println("Loop complete.");?
}?
}?


該程序產生如下的輸出:?

i: 0?
i: 1?
i: 2?
i: 3?
i: 4?
i: 5?
i: 6?
i: 7?
i: 8?
i: 9?
Loop complete.?

正如你看到的那樣,盡管for 循環被設計為從 0執行到99,但是當i等于10時,break語句終止了程序。break語句能用于任何 Java 循環中,包括人們有意設置的無限循環。例如,將上一個程序用while 循環改寫如下。該程序的輸出和剛才看到的輸出一樣。?

// Using break to exit a while loop.?
class BreakLoop2 {?
public static void main(String args[]) {?
int i = 0;?
while(i < 100) {?
if(i == 10) break; // terminate loop if i is 10?
System.out.println("i: " + i);?
i++;?
}?
System.out.println("Loop complete.");?
}?
}?


在一系列嵌套循環中使用break 語句時,它將僅僅終止最里面的循環。例如:?

// Using break with nested loops.?
class BreakLoop3 {?
public static void main(String args[]) {?
for(int i=0; i<3; i++) {?
System.out.print("Pass " + i + ":");?
for(int j=0; j<100; j++) {?
if(j == 10) break; // terminate loop if j is 10
System.out.print(j + " ");?
}?
System.out.println();
}?
System.out.println("Loops complete.");?
}?
}?


該程序產生如下的輸出:?

Pass 0: 0 1 2 3 4 5 6 7 8 9?
Pass 1: 0 1 2 3 4 5 6 7 8 9?
Pass 2: 0 1 2 3 4 5 6 7 8 9?
Loops complete.?


從中可以看出,在內部循環中的break語句僅僅終止了該循環,外部的循環不受影響。?

關于break ,在這里要記住兩點。首先,一個循環中可以有一個以上的break 語句。但要小心,太多的break 語句會破壞你的代碼結構。其次,switch語句中的break僅僅影響該switch 語句,而不會影響其中的任何循環。?

注意:break 不是被設計來提供一種正常的循環終止的方法。循環的條件語句是專門用來終止循環的。只有在某類特殊的情況下,才用break 語句來取消一個循環。?

把break 當作goto 的一種形式來用?

break 語句除了在switch語句和循環中使用之外,它還能作為goto 語句的一種“文明”形式來使用。Java 中沒有 goto 語句,因為goto 語句提供了一種改變程序運行流程的非結構化方式。這通常使程序難以理解和難于維護。它也阻止了某些編譯器的優化。但是,有些地方goto 語句對于構造流程控制是有用的而且是合法的。例如,從嵌套很深的循環中退出時, goto 語句就很有幫助。因此,Java 定義了break 語句的一種擴展形式來處理這種情況。通過使用這種形式的break,你可以終止一個或者幾個代碼塊。這些代碼塊不必是一個循環或一個switch語句的一部分,它們可以是任何的塊。而且,由于這種形式的break 語句帶有標簽,你可以明確指定執行從何處重新開始。你將看到,break帶給你的是goto 的益處,并舍棄了goto 語句帶來的麻煩。?

標簽break 語句的通用格式如下所示:?

breaklabel;?
這里,標簽label 是標識代碼塊的標簽。當這種形式的break執行時,控制被傳遞出指定的代碼塊。被加標簽的代碼塊必須包圍break 語句,但是它不需要是直接的包圍break的塊。這意味著你可以使用一個加標簽的break 語句退出一系列的嵌套塊。但是你不能使用break 語句將控制傳遞到不包含break 語句的代碼塊。?

要指定一個代碼塊,在其開頭加一個標簽即可。標簽(label )可以是任何合法有效的Java 標識符后跟一個冒號。一旦你給一個塊加上標簽后,你就可以使用這個標簽作為break 語句的對象了。這樣做會使執行在加標簽的塊的結尾重新開始。例如,下面的程序示例了 3 個嵌套塊,每一個都有它自己的標簽。break語句使執行向前跳,調過了定義為標簽second 的代碼塊結尾,跳過了2個println ( ) 語句。?

// Using break as a civilized form of goto.?
class Break {?
public static void main(String args[]) {?
boolean t = true;?
first: {?
second: {?
third: {
System.out.println("Before the break.");
if(t) break second; // break out of second block
System.out.println("This won't execute");
}?

System.out.println("This won'texecute");
}
System.out.println("This is after secondblock.");?

}?
}?
}?


運行該程序,產生如下的輸出:?

Before the break.?
This is after second block.?


標簽break 語句的一個最普遍的用法是退出循環嵌套。例如,下面的程序中,外層的循環只執行了一次:?

// Using break to exit from nested loops?
class BreakLoop4 {?
public static void main(String args[]) {?
outer:?
for(int i=0; i<3; i++) {?
System.out.print("Pass " + i + ":");?
for(int j=0; j<100; j++) {?
if(j == 10) break outer; // exit both loops?
System.out.print(j + " ");?
}?
System.out.println("This will notprint");?
}?
System.out.println("Loops complete.");?
}?
}?
該程序產生如下的輸出:?

Pass 0: 0 1 2 3 4 5 6 7 8 9 Loops complete.?

你可以看到,當內部循環退到外部循環時,兩個循環都被終止了。記住如果一個標簽不在包圍break的塊中定義,你就不能break 到該標簽。例如,下面的程序就是非法的,且不會被編譯:?

// This program contains an error.?
class BreakErr {?
public static void main(String args[]) {?
one:
for(int i=0; i<3; i++) {?
System.out.print("Pass " + i + ":");?
}?
for(int j=0; j<100; j++) {?
if(j == 10) break one; // WRONG?
System.out.print(j + " ");?
}?
}?
}?


因為標簽為one的循環沒有包圍break 語句,所以不能將控制傳遞到該塊。?

5.3.2 使用continue 語句?
有時強迫一個循環提早反復是有用的。也就是,你可能想要繼續運行循環,但是要忽略這次重復剩余的循環體的語句。實際上,goto 只不過是跳過循環體,到達循環的尾部。continue 語句是break語句的補充。在while 和do while 循環中,continue 語句使控制直接轉移給控制循環的條件表達式,然后繼續循環過程。在for?循環中,循環的反復表達式被求值,然后執行條件表達式,循環繼續執行。對于這3種循環,任何中間的代碼將被旁路。?

下例使用continue 語句,使每行打印2個數字:?

// Demonstrate continue.?
class Continue {?
public static void main(String args[]) {?
for(int i=0; i<10; i++) {?
System.out.print(i + " ");?
if (i%2 == 0) continue;?
System.out.println("");?
}?
}?
}?


該程序使用%(模)運算符來檢驗變量i是否為偶數,如果是,循環繼續執行而不輸出一個新行。該程序的結果如下:?

0 1?
2 3?
4 5?
6 7?
8 9?


對于break語句,continue 可以指定一個標簽來說明繼續哪個包圍的循環。下面的例子運用continue 語句來打印0到9的三角形乘法表:?

// Using continue with a label.?

class ContinueLabel {?

public static void main(String args[]) {?

outer:
for (int i=0; i<10; i++) {?

for(int j=0; j<10; j++) {?

if(j > i) {
System.out.println();
continue outer;?
}?

System.out.print(" " + (i * j));?
}
}?

System.out.println();?

}?

}?

在本例中的continue 語句終止了計數j的循環而繼續計數i的下一次循環反復。該程序的輸出如下:?

0?
0 1?
0 2 4?
0 3 6 9?
0 4 8 12 16?
0 5 10 15 20 25?
0 6 12 18 24 30 36?
0 7 14 21 28 35 42 49?
0 8 16 24 32 40 48 56 64?
0 9 18 27 36 45 54 63 72 81?


很好的利用continue 語句的情況很少,一個原因是Java 提供了一系列豐富的循環語句,可以適用于絕大多數應用程序。但是,對于那些需要提早反復的特殊情形,continue 語句提供了一個結構化的方法來實現。?

5.3.3 使用return語句?
最后一個控制語句是return。return語句用來明確地從一個方法返回。也就是,return?語句使程序控制返回到調用它的方法。因此,將它分類為跳轉語句。這里對其作簡要地介紹。?

在一個方法的任何時間,return 語句可被用來使正在執行的分支程序返回到調用它的方法。下面的例子說明這一點。下例中,由于是Java 運行系統調用main() ,因此,return語句使程序執行返回到Java 運行系統。?

// Demonstrate return.?
class Return {?
public static void main(String args[]) {?
boolean t = true;?
System.out.println("Before thereturn.");
if(t) return; // return to caller
System.out.println("This won'texecute.");?
}?
}?


該程序的結果如下:?

Before the return.?

正如你看到的一樣,最后的println( ) 語句沒有被執行。一旦return語句被執行,程序控制傳遞到它的調用者。?

最后一點:在上面的程序中,if(t)語句是必要的。沒有它,Java 編譯器將標記“執行不到的代碼”(unreachable code )錯誤,因為編譯器知道最后的println ()語句將永遠不會被執行。為阻止這個錯誤,為了這個例子能夠執行,在這里使用if語句來“蒙騙”編譯器。

總結

以上是生活随笔為你收集整理的java 跳转语句的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。