1.分支結構
任何復雜的邏輯都可以通過“順序”、“分支”、“循環”三種基本的程序結構來實現。分支結構:程序在運行中,根據不同的條件執行不同的語句。
三種結構:
- if結構:滿足條件時執行語句,不滿足則不執行(1條路)
- if...else結構:滿足條件執行語句,不滿足則執行另外的語句(兩條路)
- if...else if結構:多個條件,滿足不同條件執行不同語句(多條路)
1.1 if結構
語法:
if(條件表達式){
語句塊;
}
1)案例1,判斷一個整數是不是偶數
public class Test {
public static void main(String[] args){
int a = 4;
if(a%2==0){
System.out.println(a+"是偶數");
}
System.out.println("over");
}
}
1.2 if...else結構
語法:
if(條件表達式){
語句塊1;
}else{
語句塊2;
}
1)案例1,判斷一個整數是不是偶數,並輸出結果
public class Test {
public static void main(String[] args){
int a = 4;
if(a%2==0){
System.out.println(a+"是偶數");
}else{
System.out.println(a+"不是偶數");
}
System.out.println("over");
}
}
3.if...else if結構(嵌套)
語法:
if(條件表達式1){
語句塊1;
}else if(條件表達式2){
語句塊2;
}else if(條件表達式3){
語句塊3;
}
1)案例1,判斷一個數是正數、負數或是0並輸出結果
public class Test {
public static void main(String[] args){
int a = 4;
if(a>0){
System.out.println(a+"是正數");
}else if(a<0){
System.out.println(a+"是負數");
}else if(a==0){
System.out.println(a+"是0");
}
System.out.println("over");
}
}
2.switch-case
一種特殊的分支結構,只能用於判斷整數,可以根據一個整數表達式的不同值,從不同程序入口開始執行,需要和break配合使用,執行完相應的語句后則退出switch塊,不執行下面的語句。
如果不加break,則會在滿足條件后,將該條件下面的其他條件的語句塊一起按順序輸出,直到遇到break或}停止,如下案例2。
default選項可以不寫,也不是必須放在后一個(建議放最后),默認匹配完所有條件后不匹配的情況下才會執行default語句,default可以不寫break,如下案例3。
語法:
switch(判斷整數){
case 1:
語句塊1;
break;
case 2:
語句塊2;
break;
case 3:
語句塊3;
break;
default:
語句塊4;
break;
}
1)案例1
public class Test {
public static void main(String[] args){
int a = 4;
switch(a){
case 1:
System.out.println("A");
break;
case 2:
System.out.println("B");
break;
case 3:
System.out.println("C");
break;
default:
System.out.println("D");
break;
}
}
}
/*
運行結果:D
*/
2)案例2,不加break的情況
public class Test {
public static void main(String[] args){
int a = 2;
switch(a){
case 1:
System.out.println("A");
break;
case 2:
System.out.println("B");
case 3:
System.out.println("C");
default:
System.out.println("D");
}
}
}
/*
運行結果:
B
C
D
*/
3)案例3,default不寫在最后,default需要加break,如下情況
public class Test {
public static void main(String[] args){
int a = 4;
switch(a){
default:
System.out.println("D");
case 1:
System.out.println("A");
break;
case 2:
System.out.println("B");
break;
case 3:
System.out.println("C");
break;
}
}
}
/*
運行結果:
D
A
*/
2.1 switch-case的優缺點
1)優點:
- 常常和break語句配合使用實現分支的功能
- 與if...else的主要區別在於switch-case結構的效率高、結構更清晰
- 從JDK7.0開始,switch-case支持字符串表達式,如下案例
2)缺點:
- 只能判斷整數(字符串)相等
3)案例1,判斷字符串
public class Test {
public static void main(String[] args){
String sng = "B";
switch(sng){
case "A":
System.out.println("A");
break;
case "B":
System.out.println("B");
break;
default:
System.out.println("C");
break;
}
}
}
/*
運行結果:B
*/
4)案例2,判斷字符
public class Test {
public static void main(String[] args){
char sng = 'B';
switch(sng){
case 'A':
System.out.println("A");
break;
case 'B':
System.out.println("B");
break;
default:
System.out.println("C");
break;
}
}
}
/*
運行結果:B
*/