Java分支結構詳解
- 前言
- 一、if 語句
- 基本語法
- 表示一
- 表示二
- 表示三
- 代碼示例
- 判定一個數字是奇數還是偶數
- 判定一個數字是正數還是負數
- 判定某一年份是否是閏年
- 注意要點
- 懸垂 else 問題
- 代碼風格問題
- 分號問題
- 二、switch 語句
- 基本語法
- 代碼示例
- 根據 day 的值輸出星期
- 注意事項
- break 不要遺漏
- switch 中的值只能是 整數|枚舉|字符|字符串
- switch 不能表達復雜的條件
- switch嵌套
前言
推薦一個網站給想要了解或者學習人工智能知識的讀者,這個網站里內容講解通俗易懂且風趣幽默,對我幫助很大。我想與大家分享這個寶藏網站,請點擊下方鏈接查看。
https://www.captainbed.cn/f1
Java中的分支結構用于根據條件執行不同的代碼塊,包括if-else
語句、switch
語句等,實現程序流程的控制。
一、if 語句
在Java中,if
語句是一個條件控制語句,用于根據條件的真假決定是否執行特定的代碼塊。
在if
語句中,條件是一個布爾表達式,可以是一個比較表達式(例如==
、!=
、>
、<
等),也可以是一個邏輯表達式(例如&&
、||
、!
等)。
基本語法
表示一
if(布爾表達式){//條件滿足時執行代碼
}
表示二
if(布爾表達式){//條件滿足時執行代碼
}else{//條件不滿足時執行代碼
}
表示三
if(布爾表達式){//條件滿足時執行代碼
}else if(布爾表達式){//條件滿足時執行代碼
}else{//條件都不滿足時執行代碼
}
代碼示例
判定一個數字是奇數還是偶數
public static void main(String[] args) {int num = 10;if (num % 2 == 0) {System.out.println("num 是偶數");} else {System.out.println("num 是奇數");}
}
以上代碼是一個Java程序的主方法,程序開始執行的入口。在主方法中,定義了一個整型變量num
,并初始化為10。
接下來使用if-else
語句判斷num
是否是偶數。條件表達式num % 2 == 0
用于判斷num
是否可以被2整除,如果可以,則說明num
是偶數,執行if語句中的代碼塊,打印出"num
是偶數"。
如果條件表達式的結果為false
,即num
不能被2整除,說明num
是奇數,執行else
語句中的代碼塊,打印出"num
是奇數"。
因為num
的值為10,可以被2整除,所以輸出結果為"num
是偶數"。
判定一個數字是正數還是負數
public static void main(String[] args) {int num = 10;if (num > 0) {System.out.println("num 是正數");} else if (num < 0) {System.out.println("num 是負數");} else {System.out.println("num 是 0");}
}
以上代碼是一個Java程序的主方法,程序開始執行的入口。在主方法中,定義了一個整型變量num
,并初始化為10。
接下來使用if-else if-else
語句對num
的值進行判斷。首先判斷num
是否大于0,如果條件表達式num > 0
的結果為true,則執行if語句中的代碼塊,打印出"num
是正數"。
如果條件表達式num > 0
的結果為false
,則繼續判斷num
是否小于0。如果條件表達式num < 0
的結果為true
,則執行else if
語句中的代碼塊,打印出"num
是負數"。
如果以上兩個條件表達式的結果都為false
,說明num
等于0,執行else
語句中的代碼塊,打印出"num
是 0"。
因為num的值為10,大于0,所以輸出結果為"num
是正數"。
判定某一年份是否是閏年
public static void main(String[] args) {int year = 2000;if (year % 100 == 0) {// 判定世紀閏年if (year % 400 == 0) {System.out.println("是閏年");} else {System.out.println("不是閏年");}} else {// 普通閏年if (year % 4 == 0) {System.out.println("是閏年");} else {System.out.println("不是閏年");}}
}
以上代碼是一個Java程序的主方法,程序開始執行的入口。在主方法中,定義了一個整型變量year
,并初始化為2000。
接下來使用嵌套的if-else
語句對year
進行判斷,判斷year
是否是閏年。
首先判斷year
是否能被100整除,即條件表達式year % 100 == 0
的結果。如果條件表達式的結果為true
,則執行if
語句中的代碼塊,進一步判斷是否是世紀閏年。
在if
語句中,判斷year
是否能被400整除,即條件表達式year % 400 == 0
的結果。如果條件表達式的結果為true
,則輸出"是閏年"。如果條件表達式的結果為false
,則輸出"不是閏年"。
如果條件表達式year % 100 == 0
的結果為false
,則執行else
語句中的代碼塊,判斷是否是普通閏年。
在else
語句中,判斷year
是否能被4整除,即條件表達式year % 4 == 0
的結果。如果條件表達式的結果為true
,則輸出"是閏年"。如果條件表達式的結果為false
,則輸出"不是閏年"。
因為year
的值為2000,滿足條件year % 100 == 0
,進一步滿足條件year % 400 == 0
,所以輸出結果為"是閏年"。
注意要點
懸垂 else 問題
public static void main(String[] args) {int x = 10;int y = 10;if (x == 10)if (y == 10)System.out.println("aaa");elseSystem.out.println("bbb");
}
if
/ else
語句中可以不加 大括號 . 但是也可以寫語句(只能寫一條語句).
此時 else
是和最接近的 if
匹配.
但是實際開發中我們 不建議 這么寫. 最好加上大括號
代碼風格問題
public static void main(String[] args) {// 風格1int x = 10;if (x == 10) {// 滿足條件} else {// 不滿足條件}
// 風格2int x = 10;if (x == 10){// 滿足條件}else{// 不滿足條件}
}
雖然兩種方式都是合法的, 但是 Java 中更推薦使用風格1, {
放在 if
/ else
同一行.
分號問題
public static void main(String[] args) {int x = 20;if (x == 10); {System.out.println("hehe");}
}
此處多寫了一個 分號, 導致分號成為了 if
語句的語句體, 而 { }
中的代碼已經成為了和一個 if
無關的代碼塊.
二、switch 語句
基本語法
public static void main(String[] args) {switch(整數|枚舉|字符|字符串){case 內容1 : {內容滿足時執行語句;[break;]}case 內容2 : {內容滿足時執行語句;[break;]}...default:{內容都不滿足時執行語句;[break;]}}
}
代碼示例
根據 day 的值輸出星期
public static void main(String[] args) {int day = 1;switch(day) {case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case 3:System.out.println("星期三");break;case 4:System.out.println("星期四");break;case 5:System.out.println("星期五");break;case 6:System.out.println("星期六");break;case 7:System.out.println("星期日");break;default:System.out.println("輸入有誤");break;}
}
這段代碼使用了Switch
語句來根據一個整型變量day
的值輸出對應的星期幾。Switch
語句中的每個case
對應了一個可能的day
值,當day
的值滿足某個case
時,會執行該case
下的語句,并且使用break
語句跳出Switch
語句。如果day
的值不滿足任何一個case
,那么會執行default
下的語句。在這段代碼中,day
的值為1,所以輸出為"星期一"。
根據 switch
中值的不同, 會執行對應的 case
語句.
遇到 break
就會結束該 case
語句.
如果 switch
中的值沒有匹配的 case
, 就會執行 default
中的語句.
我們建議一個 switch
語句最好都要帶上 default
.
注意事項
break 不要遺漏
否則會失去 “多分支選擇” 的效果
public static void main(String[] args) {int day = 1;switch(day) {case 1:System.out.println("星期一");// break;case 2:System.out.println("星期二");break;}
}
我們發現, 不寫 break
的時候, case
語句會依次向下執行, 從而失去了多分支的效果.
switch 中的值只能是 整數|枚舉|字符|字符串
public static void main(String[] args) {double num = 1.0;switch(num) {case 1.0:System.out.println("hehe");break;case 2.0:System.out.println("haha");break;}
}
switch 不能表達復雜的條件
public static void main(String[] args) {// 例如: 如果 num 的值在 10 到 20 之間, 就打印 hehe
// 這樣的代碼使用 if 很容易表達, 但是使用 switch 就無法表示.if (num > 10 && num < 20) {System.out.println("hehe");}
}
switch嵌套
雖然可以運行,但是不美觀,少用
public static void main(String[] args) {int x = 1;int y = 1;switch(x) {case 1:switch(y) {case 1:System.out.println("hehe");break;}break;case 2:System.out.println("haha");break;}
}