阿里巴巴Java開發(fā)手冊(cè)關(guān)于switch的問題
問題描述
在一個(gè) switch 塊內(nèi),每個(gè) case 要么通過 break/return 等來終止,要么注釋說明程序?qū)⒗^續(xù)執(zhí)行到哪一個(gè) case 為止; 在一個(gè) switch 塊內(nèi),都必須包含一個(gè) default 語句并且放在最后,即使它什么代碼也沒有。這是為什么?
問題解答
回答1:switch case中default是很有必要的,哪怕僅僅是個(gè)控制臺(tái)輸出。比如你有3個(gè)case,’1’,’2’,’3’.但是你在某些情況下不小心傳入了4,這時(shí)候如果沒有default,程序就崩潰了,有時(shí)候可以把default看成是異常處理的一種。當(dāng)然,default也是懶人處理問題的不錯(cuò)選擇。還是之前的123,只有1的時(shí)候輸出’hello world’,其他都輸出’nice to meet you’.如果不用default你可能要寫好幾個(gè)case來對(duì)應(yīng),default的話就一個(gè)case就夠了。除了1,其他都走default。return/break的問題,還是上文的3個(gè)case, 1,2,3。如果1的邏輯執(zhí)行完沒有return/break來結(jié)束,那2的邏輯也會(huì)跟著執(zhí)行,直到遇到return/break為止。當(dāng)然這種情況是合法的。但是有些時(shí)候我們只想執(zhí)行case 1中的邏輯,那就必須在1的邏輯后加return/break,否則多執(zhí)行的2的邏輯,就會(huì)導(dǎo)致其他地方的邏輯錯(cuò)誤。
大概就是這個(gè)意思,沒什么太多的內(nèi)容。
相關(guān)文章:
1. mac OSX10.12.4 (16E195)下Mysql 5.7.18找不到配置文件my.cnf2. mysql - 怎么生成這個(gè)sql表?3. mysql儲(chǔ)存json錯(cuò)誤4. php - 公眾號(hào)文章底部的小程序二維碼如何統(tǒng)計(jì)?5. mysql - 表名稱前綴到底有啥用?6. mysql - 數(shù)據(jù)庫表中,兩個(gè)表互為外鍵參考如何解決7. Navicat for mysql 中以json格式儲(chǔ)存的數(shù)據(jù)存在大量反斜杠,如何去除?8. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語法實(shí)現(xiàn)存在即更新應(yīng)該使用哪個(gè)標(biāo)簽?9. mysql - 數(shù)據(jù)庫建字段,默認(rèn)值空和empty string有什么區(qū)別 11010. sql語句 - 如何在mysql中批量添加用戶?
