瀏覽以下內容前,請點擊並閱讀 聲明
一般情況下,代碼的執行按照從上到下的順序,然而通過加入一些判斷,循環和跳轉語句,你可以有條件地執行特定的語句。
接下來分三部分介紹Java的控制流語句,他們是判斷語句(if-then
, if-then-else
, switch
),循環語句(for
, while
, do-while
)和跳轉語句(break
, continue
, return
)。
判斷語句
if-then語句
if-then語句是控制流語句中最基本的語句,它告訴程序如果制定的條件為true,則執行一段特定代碼。
if-then-else語句
if-then-else語句提供了兩條或者多條可執行的路徑。
int testscore = 76; char grade; if (testscore >= 90) {//如果if后條件返回true,則執行該花掛號內代碼,接着執行最后一行代碼,否則判斷下一個條件句,依次類推 grade = 'A'; } else if (testscore >= 80) { grade = 'B'; } else if (testscore >= 70) { grade = 'C'; } else if (testscore >= 60) { grade = 'D'; } else { grade = 'F'; } System.out.println("Grade = " + grade);
switch語句
switch語句像是匹配執行的語句。switch后的括號內的數據類型可以是基礎類型中的byte,short,char,和int。也可使用枚舉類型和String(字符串),封裝了基礎類型的Character,Byte,Short,Integer。其用法如下代碼所示:
public class SwitchDemo { public static void main(String[] args) { int month = 8; String monthString; switch (month) { case 1: monthString = "January"; break; case 2: monthString = "February"; break; case 3: monthString = "March"; break; case 4: monthString = "April"; break; case 5: monthString = "May"; break; case 6: monthString = "June"; break; case 7: monthString = "July"; break; case 8: monthString = "August"; break; case 9: monthString = "September"; break; case 10: monthString = "October"; break; case 11: monthString = "November"; break; case 12: monthString = "December"; break; default: monthString = "Invalid month"; break; } System.out.println(monthString); } }
switch語句的主體又被稱為switch代碼塊,switch代碼塊內可以多個case標簽標記的代碼,default標簽可有可無,它表示如果沒有匹配的結果,則執行default標記的代碼,注意break的作用,如果沒有break,則從匹配的case開始,switch代碼塊內的所有代碼都會被執行。
循環語句
while語句
如果特定的條件為true時,while語句就會繼續執行一段代碼,執行后再對條件進行判斷不斷循環,條件為false時,循環終止。
while (expression) {//當條件為true時,執行花括號內代碼,並再次判斷 statement(s) }
do-while語句
do-while語句的作用與while語句類似,不過它是先執行代碼,后判斷條件,循環至條件為false為止。
do {//無論expression是否為true,先執行花掛號內代碼,然后判斷循環的條件 statement(s) } while (expression);
for語句
for語句有兩種用法,一種是:
- for (initialization; termination;increment) {//注意圓括號內用分號隔開 statement(s) }
- initialization 表達式是對整個循環的初始化,在循環開始的時候只執行一次。
- termination表達式用於判斷循環是否終止,如果為false,則終止。
- increment表達式每次循環都會執行一次,通常用來對一個變量增加一個值。
另外一種用法是通常是對一個數組或者集合進行遍歷:
int[] numbers = {1,2,3,4,5,6,7,8,9,10}; for (int item : numbers) {//注意圓括號內用表達式引號隔開 System.out.println("Count is: " + item);
其中,左邊表達式是聲明一個與數組元素類型一致,或者兼容(繼承或實現)的變量右側則是數組變量。
跳轉語句
break語句
break語句分為有標記的和無標記的兩種情況,break語句除了可以用於switch語句中之外,也可用於打斷循環語句,當沒有標記時,break打斷最內層的循環,有標記時則打斷制定標記處的循環:
class BreakWithLabelDemo { public static void main(String[] args) { int[][] arrayOfInts = { { 32, 87, 3, 589 }, { 12, 1076, 2000, 8 }, { 622, 127, 77, 955 } }; int searchfor = 12; int i; int j = 0; boolean foundIt = false; search://標記用在循環的語句之前 for (i = 0; i < arrayOfInts.length; i++) { for (j = 0; j < arrayOfInts[i].length; j++) { if (arrayOfInts[i][j] == searchfor) { foundIt = true; break search;//如果打斷標記處循環,則要指出標記名稱,此處為search } } } if (foundIt) { System.out.println("Found " + searchfor + " at " + i + ", " + j); } else { System.out.println(searchfor + " not in the array"); } } }
上述代碼輸出位:Found 12 at 1, 0
continue語句
continue用於跳過循環中剩余的部分代碼,繼續下一次循環,continue語句也分為標記代碼和未標記的用法:
class ContinueDemo { public static void main(String[] args) { String searchMe = "peter piper picked a " + "peck of pickled peppers"; int max = searchMe.length(); int numPs = 0; for (int i = 0; i < max; i++) { // interested only in p's if (searchMe.charAt(i) != 'p') continue;//此處跳過循環中的余下代碼 // process p's numPs++; } System.out.println("Found " + numPs + " p's in the string."); } }
上述代碼輸出為:Found 9 p's in the string.
return語句
return語句用於方法中的返回,return語句有兩種用法,后帶返回值和不帶返回值。執行return語句后,程序會退出該方法的執行。