深入理解 Java 中的 Switch 語(yǔ)句示例詳解
深入理解 Java 中的 Switch 語(yǔ)句
在 Java 編程中,switch
語(yǔ)句是一種強(qiáng)大的控制結(jié)構(gòu),能夠根據(jù)表達(dá)式的值選擇執(zhí)行不同的代碼塊。本文將詳細(xì)介紹 switch
的基本語(yǔ)法、使用案例、注意事項(xiàng)以及與 if
語(yǔ)句的選擇。
基本語(yǔ)法
switch
語(yǔ)句的基本語(yǔ)法如下:
switch (表達(dá)式) { case 常量1: // 執(zhí)行代碼塊1 break; case 常量2: // 執(zhí)行代碼塊2 break; ... default: // 執(zhí)行默認(rèn)代碼塊 }
關(guān)鍵點(diǎn)
- 關(guān)鍵字:使用
switch
來聲明分支結(jié)構(gòu)。 - 表達(dá)式:該表達(dá)式的值用于選擇相應(yīng)的
case
。 - case 常量:當(dāng)表達(dá)式的值等于某個(gè)常量時(shí),將執(zhí)行對(duì)應(yīng)的代碼塊。
- break:用于退出
switch
,防止繼續(xù)執(zhí)行下一個(gè)case
。 - default:可選的,當(dāng)沒有任何
case
匹配時(shí)執(zhí)行。
程序流程圖
示例代碼
以下是一個(gè)簡(jiǎn)單的示例,展示如何根據(jù)輸入的字符輸出對(duì)應(yīng)的星期幾:
import java.util.Scanner; public class SwitchExample { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("請(qǐng)輸入一個(gè)字符(a-g):"); char c1 = in.next().charAt(0); switch (c1) { case 'a': System.out.println("星期一"); break; case 'b': System.out.println("星期二"); break; case 'c': System.out.println("星期三"); break; case 'd': System.out.println("星期四"); break; case 'e': System.out.println("星期五"); break; case 'f': System.out.println("星期六"); break; case 'g': System.out.println("星期日"); break; default: System.out.println("輸入的內(nèi)容不正確"); } System.out.println("退出Switch,繼續(xù)執(zhí)行程序"); } }
注意事項(xiàng)
在使用 switch
語(yǔ)句時(shí),需注意以下幾點(diǎn):
- 數(shù)據(jù)類型匹配:表達(dá)式的數(shù)據(jù)類型應(yīng)與
case
后的常量類型一致,或能自動(dòng)轉(zhuǎn)換。 - 支持的數(shù)據(jù)類型:
switch
的表達(dá)式可以是(byte, short, int, char, enum, String)
。 - case 子句:
case
中的值必須是常量,不能是變量。 - default 子句:可選的,未匹配時(shí)執(zhí)行。如果不寫,可能不會(huì)有輸出。
- break 語(yǔ)句:用于結(jié)束當(dāng)前
case
的執(zhí)行,若不寫,則會(huì)順序執(zhí)行下一個(gè)case
直到遇到break
。
使用細(xì)節(jié)
public class SwitchDetail { public static void main(String[] args) { char c = 'a'; System.out.println(c); // 輸出 a System.out.println((int) c); // 輸出 97 switch (c) { case 'a': System.out.println("ok1"); break; case 'b': System.out.println("ok1"); break; case 20: // char 類型可以轉(zhuǎn)換為整數(shù) System.out.println("ok1"); break; default: System.out.println("輸入錯(cuò)誤。"); } //使用String類型示例,過程如下 // char d = "a" // switch(c){ // case "a": // System.out.println("ok1"); // break; // case "b": // System.out.println("ok1"); // break; // case 20: //這里 會(huì)報(bào)錯(cuò),這里的類型和String類型不能轉(zhuǎn)換 // System.out.println("ok1"); // break; // default: // System.out.println("輸入錯(cuò)誤。"); // } } }
練習(xí)
- 使用 switch 把小寫類型的 char 型轉(zhuǎn)為大寫(鍵盤輸入)。只轉(zhuǎn)換 a, b, c, d, e. 其它的輸出 “other”。
- 對(duì)學(xué)生成績(jī)大于 60 分的,輸出"合格"。低于 60 分的,輸出"不合格"。(注:輸入的成績(jī)不能大于 100), 提示 成績(jī)/60
- 根據(jù)用于指定月份,打印該月份所屬的季節(jié)。3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季 [課堂練習(xí), 提示 使用穿透 ]
練習(xí) 1:小寫字母轉(zhuǎn)大寫
import java.util.Scanner; public class SwitchExercise { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("請(qǐng)輸入一個(gè)小寫英文字母(a-e):"); char c1 = in.next().charAt(0); switch (c1) { case 'a': case 'b': case 'c': case 'd': case 'e': System.out.println(c1 + "的大寫是" + (char) (c1 - 32)); break; default: System.out.println("other"); } } }
練習(xí) 2:成績(jī)判斷
// 這里使用編程思路,將成績(jī)的范圍轉(zhuǎn)換成一個(gè)整數(shù)類型來進(jìn)行判斷, // [0-60]使用除法的思想把轉(zhuǎn)換成一個(gè)整數(shù) // [60- 100] 同理使用相同的思路 import java.util.Scanner; public class SwitchExercise02 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("請(qǐng)輸入你的分?jǐn)?shù):"); int grade = in.nextInt(); if (grade >= 0 && grade <= 100) { switch (grade / 60) { case 0: System.out.println("不合格"); break; case 1: System.out.println("合格"); break; default: System.out.println("輸入有誤,請(qǐng)重新輸入?。?!"); } } } }
練習(xí) 3:季節(jié)判斷
// 穿透的意思就是使用一個(gè)條件能夠使所有的條件都能夠符合使用 import java.util.Scanner; public class SwitchExercise03 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("請(qǐng)輸入一個(gè)月份:"); int month = in.nextInt(); switch (month) { case 3: case 4: case 5: System.out.println("春季"); break; case 6: case 7: case 8: System.out.println("夏季"); break; case 9: case 10: case 11: System.out.println("秋季"); break; case 12: case 1: case 2: System.out.println("冬季"); break; default: System.out.println("輸入有誤,請(qǐng)重新輸入?。。?); } } }
switch 與 if 的選擇
- 使用場(chǎng)景:當(dāng)判斷的具體數(shù)值不多且符合
byte, short, int, char, enum, String
類型時(shí),推薦使用switch
語(yǔ)句。 - 適用范圍:對(duì)于區(qū)間判斷和布爾類型的判斷,使用
if
語(yǔ)句更為靈活。
通過上述內(nèi)容,相信你對(duì) Java 中的 switch
語(yǔ)句有了更深入的理解。希望這篇文章能幫助你在編程中更加得心應(yīng)手!
到此這篇關(guān)于深入理解 Java 中的 Switch 語(yǔ)句的文章就介紹到這了,更多相關(guān)Java Switch 語(yǔ)句內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JAVA SpringBoot統(tǒng)一日志處理原理詳解
這篇文章主要介紹了SpringBoot的統(tǒng)一日志處理原理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-09-09iOS獲取AppIcon and LaunchImage''s name(app圖標(biāo)和啟動(dòng)圖片名字)
這篇文章主要介紹了iOS獲取AppIcon and LaunchImage's name(app圖標(biāo)和啟動(dòng)圖片名字)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧2016-08-08mybatisFlex各種鏈?zhǔn)絪ql寫法小結(jié)
本文主要介紹了mybatisFlex各種鏈?zhǔn)絪ql寫法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-04-04Java Scaner類詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
Java.util.Scanner是Java5.0的新特征,主要功能是簡(jiǎn)化文本掃描。下面通過本文給大家分享java scaner類相關(guān)知識(shí),需要的朋友下吧2017-04-04Java Mybatis中的 ${ } 和 #{ }的區(qū)別使用詳解
這篇文章主要介紹了Mybatis中的 ${ } 和 #{ }的區(qū)別使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07