Java switch使用原理及實例解析
這篇文章主要介紹了Java switch使用及實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
java中有兩個經(jīng)常用于條件判斷的方法,一個是if{}else{},另一個就是switch()了??偟膩碚f因為switch可以直接一對一滿足條件,不滿足條件的情況是不會執(zhí)行的的所以switch的效率會相對if{}else{}更高一些,而且這兩個方法是可以無門檻互換的。
switch的使用:
- 能用于switch判斷的類型有:byte、short、int、char(JDK1.6),還有枚舉類型,但是在JDK1.7后添加了對String類型的判斷
- case語句中少寫了break,編譯不會報錯,但是會一直執(zhí)行之后所有case條件下的語句而不再判斷,直到default語句
- 若果沒有符合條件的case就執(zhí)行default下的代碼塊,default并不是必須的,也可以不寫
switch(mark) {
case 0:
System.out.println(mark);
break;
case 10:
System.out.println(mark);
break;
case 20:
System.out.println(mark);
break;
}
這里mark值是判斷條件,case 對應的是具體的值,如果mark=0或者mark=10或者mark=20,相對應的條件成立就會執(zhí)行case中的程序
在這里有一個思維誤區(qū)很容易出錯,看下面代碼:
switch(mark) {
case 0:
System.out.println(mark);
mark = 10;
break;
case 10:
System.out.println(mark);
mark = 20;
break;
case 20:
System.out.println(mark);
mark = 30;
break;
}
這段代碼比和上面的代碼相比,在每個case中會重新給mark賦值,讓這個重新賦的值和下一步的case相對應。
錯誤思維:如果mark的初始值是0,這個switch程序會執(zhí)行三次,執(zhí)行的順序依次是0,10,20。
因為我們在每一步的case中都重新給mark賦值了,所以不熟悉的很容易就會覺得這個switch會從上往下執(zhí)行,凡是滿足條件的步驟都會執(zhí)行。其實這個switch是只會執(zhí)行一次的,因為每個case后面都跟了一個break,這個break的作用就是跳出當前循環(huán)也就是跳出當前的switch,所以這個switch只會執(zhí)行mark初始值對應的那個case,后面的步驟不會繼續(xù)執(zhí)行。如果要想三個步驟都依次執(zhí)行需要在switch外面加上一個while循環(huán),在一定的條件內(nèi)重復執(zhí)行switch:如下加上while
while(mark<=30) {
switch(mark) {
case 0:
System.out.println(mark);
mark = 10;
break;
case 10:
System.out.println(mark);
mark = 20;
break;
case 20:
System.out.println(mark);
mark = 30;
break;
}
}
總結(jié):每次進入switch,如果每個case后面都用break跳出當前循環(huán)了,則不管mark的值怎么變,只會執(zhí)行一個case
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- 詳解java中if語句和switch的使用
- Java中switch的三種用法方式
- 淺談java switch如果case后面沒有break,會出現(xiàn)什么情況?
- java中的switch case語句使用詳解
- Java枚舉類型在switch語句正確使用方法詳解
- Java Switch對各類型支持實現(xiàn)原理
- Java switch多值匹配操作詳解
- Java switch關(guān)鍵字原理及用法詳解
- JAVA字符串類型switch的底層原理詳析
- Java switch 語句如何使用 String 參數(shù)
- Java實現(xiàn)轉(zhuǎn)跳不同系統(tǒng)使用枚舉加switch的方式示例
- java中switch選擇語句代碼詳解
- Java中Switch用法代碼示例
- Java基礎之switch分支結(jié)構(gòu)詳解
相關(guān)文章
基于SpringIOC創(chuàng)建對象的四種方式總結(jié)
這篇文章主要介紹了基于SpringIOC創(chuàng)建對象的四種方式總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
Springboot使用POI進行excel文件的導出與下載方式
這篇文章主要介紹了Springboot使用POI進行excel文件的導出與下載方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08
單臺Spring Cloud Eureka升級到三臺Eureka高可用集群
今天小編就為大家分享一篇關(guān)于單臺Spring Cloud Eureka升級到三臺Eureka高可用集群,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12
解決IDEA2020.2插件lombok報錯問題(親測有效)
這篇文章主要介紹了解決IDEA2020.2插件lombok報錯問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
springboot讀取application.yml報錯問題及解決
這篇文章主要介紹了springboot讀取application.yml報錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06

