switch 没有default_「java面试」switch究竟怎么用,不要让它吃灰了!
首先感謝大家的評論,前一篇文章中評論區(qū)有一位小伙伴問到了java中switch,今天我們來講一下switch的基礎(chǔ)用法以及注意事項(xiàng)。(感謝大家的留言支持,我都會認(rèn)真看,也盡可能的為大家解答疑惑)
1.switch用于分支選擇,使用方法如下。
switch(exp){ case value : //語句 break; case value : //語句 break; //你可以有任意數(shù)量的case語句 default : //可選 //語句}switch case 執(zhí)行時(shí),會先用exp和value進(jìn)行匹配,匹配成功返回當(dāng)前 case 中語句的值,再根據(jù)是否有 break,判斷是否繼續(xù)輸出,或是跳出判斷。
exp可以是:byte、short、int、char、String、枚舉類型(很重要)。
2.switch使用注意事項(xiàng)
(1)switch 語句中的變量類型可以是: byte、short、int 或者 char,不能使用long、float、double。從 Java SE 7 開始,switch 支持字符串 String 類型了,同時(shí) case 標(biāo)簽必須為字符串常量或字面量。
-有的小伙伴要問了,為什么?
答:因?yàn)閎yte、short、char實(shí)際上都能隱式的轉(zhuǎn)化為int類型,而long、float、double不行。
-有的小伙伴又要說了,胡說八道,我那天看見我們工程里面有人用 Character、Short、
Integer都可以!
答:確實(shí)可以,這來源于包裝類型的自動(dòng)拆分包,拆包后流程就都一樣了。
-有的小伙伴可能還要問,String也不能隱式轉(zhuǎn)int,為什么能支持呢?
答:實(shí)際上比的還是int,只不過這次是用exp的hashcode()方法獲取一個(gè)int類型的hash值,然后跟case后面的String用同樣的方法獲取哈希值,兩個(gè)一比,就匹配上了。從這里也能看出來,case后面的string值不能為空。
(2)switch 語句可以擁有多個(gè) case 語句。每個(gè) case 后面跟一個(gè)要比較的值和冒號。
(3)case 語句中的值的數(shù)據(jù)類型必須與變量的數(shù)據(jù)類型相同,而且只能是常量或者字面常量。
(4)當(dāng)變量的值與 case 語句的值相等時(shí),那么 case 語句之后的語句開始執(zhí)行,直到 break 語句出現(xiàn)才會跳出 switch 語句。
(5)當(dāng)遇到 break 語句時(shí),switch 語句終止。程序跳轉(zhuǎn)到 switch 語句后面的語句執(zhí)行。case 語句不必須要包含 break 語句。如果沒有 break 語句出現(xiàn),程序會繼續(xù)執(zhí)行下一條 case 語句,直到出現(xiàn) break 語句。
例如:int i = 1;switch(i){ case 0: System.out.println("0"); case 1: System.out.println("1"); case 2: System.out.println("2"); case 3: System.out.println("3"); break; default: System.out.println("default");}輸出:123(6)switch 語句可以包含一個(gè) default 分支,該分支一般是 switch 語句的最后一個(gè)分支(可以在任何位置,但建議在最后一個(gè))。default 在沒有 case 語句的值和變量值相等的時(shí)候執(zhí)行。default 分支不需要 break 語句。
例如:int i = 4;switch(i){ case 0: System.out.println("0");break; case 1: System.out.println("1");break; case 2: System.out.println("2");break; case 3: System.out.println("3"); break; default: System.out.println("default");}輸出:default總結(jié)
以上是生活随笔為你收集整理的switch 没有default_「java面试」switch究竟怎么用,不要让它吃灰了!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql+主从复制重做_XtraBac
- 下一篇: mediumtext和string转换_