最基本的程式結構,按照代碼編寫的順序,從上到下執行。根據要完成的功能,把這些工作編寫成代碼序列,然後按照這樣的順序執行就可以了。 例:下面的代碼輸出數字1到5 System.out.println(1); System.out.println(2); System.out.println(3); System.out.println(4); System.out.println(5); 程式啟動並執行時候,先執行第一行,然後第二行……直到執行完所有行。 除了這種順序結構之外,還有選擇結構和迴圈結構。本次內容介紹選擇結構,下次介紹迴圈結構。
選擇結構 在程式執行的過程中,會根據特定的條件選擇執行某些語句,例如要計算兩個整型變數a和b的最大值,有可能是a,也有可能是b,這時候需要根據a和b的關係來選擇把a的值作為最大值,還是把b的值作為最大值。選擇結構包括兩個:if和switch。
1. if語句 if語句就是在滿足一定條件的時候,會執行一些語句。 基本結構:if(條件運算式){ 語句} 條件運算式的結果必須是boolean類型的值,要執行的語句可以是多條,每條語句以分號結束即可。如果條件運算式的值為true,將執行括弧中的語句。如果條件運算式的值為false,則不會執行括弧中的語句。【例】求a和b的最大值。// IfTest.javapublic class IfTest { public static void main(String[] args) { int a = 10; int b = 8; int max = a; if(a<b) { max = b; } System.out.println("最大值為:"+max); }}運行結果為:最大值為:10 如果括弧中要執行的代碼只有一行,可以不寫括弧,上面代碼中main方法中的代碼可以改寫成: int a = 10; int b = 8; int max = a; if(a<b) max = b; System.out.println("最大值為:"+max); if語句還可以被用於在兩組語句中選擇執行一組,要麼執行第一組,要麼執行第二組。基本結構如下:if(條件運算式){ 語句1}else{ 語句2} 如果條件運算式的值為true,就執行語句1,否則將執行語句2。語句1和語句2總會有一個被執行。語句1和語句2都可以是多行,如果只有一行,則相應的括弧可以省略。 例:使用if和else,完成上面的求最大值的功能。 使用下面的代碼替換上面例子的main方法中的代碼即可。 int a = 10; int b = 8; int max; if(a<b) { max = b; } else { max = a; } System.out.println("最大值為:"+max); 啟動並執行結果與上面的相同。 else後面的語句本身也可以使用if語句,這時候就會出現這樣的結構:if(條件運算式1){ 語句1}else if(條件運算式2){ 語句2}[else{語句3}] [else{語句3}]表示這部分內容可以有,也可以沒有,需要根據情況而定。這種格式的作用是:如果條件運算式1的結果為true,執行語句1,如果條件運算式1的結果為false,而條件運算式2的結果為true,執行語句2,否則執行語句3(如果有最後的else)。這時候完成的功能不再是在兩個語句中選擇執行一個,而是在多個語句中選擇執行一個,這時候可以嵌套很多層。 【例】整型變數a的值可能是1、2、3和4,如果a為1,則輸出“進行加法運算”,a為2,則進行減法運算,a為3,則進行乘法運算,a為4,則進行除法運算。// IfElseTest.javapublic class IfElseTest { public static void main(String[] args) { int a=3; if(a==1) System.out.println("進行加法運算"); else if(a==2) System.out.println("進行減法運算"); else if(a==3) System.out.println("進行乘法運算"); else System.out.println("進行除法運算"); }} 運行結果為:進行乘法運算 如果改變a的值,運行結果會發生相應的變化。
2. switch語句 switch陳述式完成的功能是在多種情況中選擇一個執行。就像上面的例子,根據整型變數a的值,輸出不同的內容,也就是執行不同的語句,就可以使用switch語句。 switch語句的基本結構如下:switch(運算式){ case 值1:語句1 case 值2:語句2 … case 值n:語句n default:語句n+1} 如果運算式的值為“值1”,則從“語句1”開始執行,如果運算式的值為“值2”,則從“語句2”開始執行,如果運算式的值為“值n”,則從“語句n”開始執行,如果運算式的值沒有與任何case匹配,則執行default,進行匹配的順序是從前到後。這裡的“語句1”、“語句2”、“語句n”和“語句n+1”指的不是一條語句,可以是多條語句。 先看下面的例子:【例】// SwitchTest.javapublic class SwitchTest { public static void main(String[] args) { int a=2; switch(a) { case 1:System.out.println("進行加法運算"); case 2:System.out.println("進行減法運算"); case 3:System.out.println("進行乘法運算"); case 4:System.out.println("進行除法運算"); default:System.out.println("a的值不合法"); } }}運行結果為:進行減法運算進行乘法運算進行除法運算a的值不合法 從運行結果上看,並沒有達到預期的目的,按照預期應該只輸出“進行減法運算”,也就是運行結果的第一行。為什麼會得到這樣的結果,是因為switch結構中,匹配成功之後的所有代碼都會執行,也就是case運算式僅僅決定了程式的入口。如果把變數a的類型定義成long類型,編譯會報錯。所以應該注意兩點:(1) 運算式的結果可以是short類型、byte類型、int類型、char類型和實現Enumeration介面的類型。不能使用long、float和double等。(2) case匹配成功,只確定程式的入口。 要完成上面的功能,需要在每個case語句之後添加一個break,beak語句可以跳出選擇結構,不再執行後面的代碼,修改後的代碼如下:【例】// SwitchTest2.javapublic class SwitchTest2 { public static void main(String[] args) { char a=2; switch(a) { case 1:System.out.println("進行加法運算");break; case 2:System.out.println("進行減法運算");break; case 3:System.out.println("進行乘法運算");break; case 4:System.out.println("進行除法運算");break; default:System.out.println("a的值不合法"); } }}啟動並執行結果為:進行減法運算 這就是希望的結果了。 if語句和switch語句都是選擇結構,如果選擇比較少的情況應該使用if語句,如果選項比較多的時候應該使用switch。 另外,if語句的條件是布爾類型,而switch語句的條件是整數類型(包含char類型,而不包含long類型)和枚舉類型。 【注意】不管使用if語句還是使用switch語句,都要把最常用的情況放在最前面,因為這樣平均匹配次數就少了,如果把最常出現的選項放在了最後,這樣每次都要進行幾乎所有的匹配。 上一次:
第十講基本運算——運算子 下一次:
第十二講 迴圈結構 CSDN Blog:http://blog.csdn.net/javaeeteacher 邀請您為好友:http://student.csdn.net/invite.php?u=124362&c=7be8ba2b6f3b6cc5