深入理解 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
來(lái)聲明分支結(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)沒(méi)有任何
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ù)類(lèi)型匹配:表達(dá)式的數(shù)據(jù)類(lèi)型應(yīng)與
case
后的常量類(lèi)型一致,或能自動(dòng)轉(zhuǎn)換。 - 支持的數(shù)據(jù)類(lèi)型:
switch
的表達(dá)式可以是(byte, short, int, char, enum, String)
。 - case 子句:
case
中的值必須是常量,不能是變量。 - default 子句:可選的,未匹配時(shí)執(zhí)行。如果不寫(xiě),可能不會(huì)有輸出。
- break 語(yǔ)句:用于結(jié)束當(dāng)前
case
的執(zhí)行,若不寫(xiě),則會(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 類(lèi)型可以轉(zhuǎn)換為整數(shù) System.out.println("ok1"); break; default: System.out.println("輸入錯(cuò)誤。"); } //使用String類(lèi)型示例,過(guò)程如下 // 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ò),這里的類(lèi)型和String類(lèi)型不能轉(zhuǎn)換 // System.out.println("ok1"); // break; // default: // System.out.println("輸入錯(cuò)誤。"); // } } }
練習(xí)
- 使用 switch 把小寫(xiě)類(lèi)型的 char 型轉(zhuǎn)為大寫(xiě)(鍵盤(pá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:小寫(xiě)字母轉(zhuǎn)大寫(xiě)
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è)小寫(xiě)英文字母(a-e):"); char c1 = in.next().charAt(0); switch (c1) { case 'a': case 'b': case 'c': case 'd': case 'e': System.out.println(c1 + "的大寫(xiě)是" + (char) (c1 - 32)); break; default: System.out.println("other"); } } }
練習(xí) 2:成績(jī)判斷
// 這里使用編程思路,將成績(jī)的范圍轉(zhuǎn)換成一個(gè)整數(shù)類(lèi)型來(lái)進(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
類(lèi)型時(shí),推薦使用switch
語(yǔ)句。 - 適用范圍:對(duì)于區(qū)間判斷和布爾類(lèi)型的判斷,使用
if
語(yǔ)句更為靈活。
通過(guò)上述內(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)文章
SpringBoot?2.x整合Log4j2日志的詳細(xì)步驟
log4j2優(yōu)越的性能其原因在于log4j2使用了LMAX,一個(gè)無(wú)鎖的線程間通信庫(kù)代替了,logback和log4j之前的隊(duì)列,并發(fā)性能大大提升,下面這篇文章主要給大家介紹了關(guān)于SpringBoot?2.x整合Log4j2日志的相關(guān)資料,需要的朋友可以參考下2022-10-10Spring容器初始化擴(kuò)展點(diǎn)之ApplicationContextInitializer詳解
ApplicationContextInitializer是Spring框架提供的一個(gè)接口,用于在Spring應(yīng)用上下文刷新之前對(duì)其進(jìn)行自定義初始化,本文介紹Spring容器初始化擴(kuò)展點(diǎn)之ApplicationContextInitializer,感興趣的朋友一起看看吧2025-02-02eclipse連接不到genymotion問(wèn)題的解決方案
今天小編就為大家分享一篇關(guān)于eclipse連接不到genymotion問(wèn)題的解決方案,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03Java基于正則表達(dá)式獲取指定HTML標(biāo)簽指定屬性值的方法
這篇文章主要介紹了Java基于正則表達(dá)式獲取指定HTML標(biāo)簽指定屬性值的方法,涉及java基于正則的HTML元素匹配相關(guān)操作技巧,需要的朋友可以參考下2017-01-01SpringBoot+MyBatisPlus+Vue 前后端分離項(xiàng)目快速搭建過(guò)程(后端)
這篇文章主要介紹了SpringBoot+MyBatisPlus+Vue 前后端分離項(xiàng)目快速搭建過(guò)程(后端),快速生成后端代碼、封裝結(jié)果集、增刪改查、模糊查找,畢設(shè)基礎(chǔ)框架,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05解決IDEA中下載free maven plugin插件無(wú)效的問(wèn)題
這篇文章主要介紹了解決IDEA中下載free maven plugin插件無(wú)效的問(wèn)題,本文通過(guò)圖文并茂的形式給大家分享解決方案,供大家參考,需要的朋友可以參考下2020-11-11Java實(shí)現(xiàn)學(xué)生成績(jī)輸出到磁盤(pán)文件的方法詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Java實(shí)現(xiàn)將學(xué)生成績(jī)輸出到磁盤(pán)文件的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-11-11使用自定義Json注解實(shí)現(xiàn)輸出日志字段脫敏
這篇文章主要介紹了使用自定義Json注解實(shí)現(xiàn)輸出日志字段脫敏,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12