switch表達(dá)式的取值:byte,short,int,char
JDK5以后可以是枚舉
JDK7以后可以是String
如下代碼, case“A” :之后沒有break,此刻會(huì)繼續(xù)執(zhí)行 case “B”:的代碼 System.out.println("bbbbbbbb");遇到break之后,代碼運(yùn)行結(jié)束。
public static void main(String[] args) { String s = "A"; switch (s) { case "A": System.out.println("aaaaaaaa"); /* * 注意:此處如果沒有添加break,則代碼會(huì)繼續(xù)執(zhí)行,即使不滿足case條件也會(huì)執(zhí)行,直到遇到break */ //break; case "B": System.out.println("bbbbbbbb"); break; default: System.out.println("others"); break; } }
結(jié)果:
default寫在最前面的情況:
public static void main(String[] args) { int x = 2; int y = 3; switch(x){ /* * default 寫在最前面,但是如果沒有寫break;,還是會(huì)無(wú)條件執(zhí)行后面的語(yǔ)句 */ default: y++; System.out.println("default"); //break; case 3: y++; System.out.println(y); case 4: y++; System.out.println(y); } System.out.println("y="+y); }
結(jié)果:
總結(jié):
break;語(yǔ)句"不是必須的"。如果不寫,如果一旦case相應(yīng)的值成功,但內(nèi)部沒有break語(yǔ)句,那么將會(huì)無(wú)條件(不再進(jìn)行case匹配)的繼續(xù)向下執(zhí)行其它c(diǎn)ase中的語(yǔ)句,直到遇到break;語(yǔ)句或者到達(dá)switch語(yǔ)句結(jié)束。
補(bǔ)充知識(shí):Java小細(xì)節(jié)——switch有無(wú)break的區(qū)別
switch大家都很熟悉,可以從一系列代碼中選出一段去執(zhí)行,它的格式如下:
switch(c){ case 1:statement;break; case 2:statement;break; case 3:statement;break; case 4:statement;break; case 5:statement;break; default:statement; }
我們來(lái)看一下下面這段代碼,然后判斷下會(huì)輸出什么。
public static void main(String[] args) { doSwitch(0); } static void doSwitch(int i) { 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); } default:{ System.out.println("default"); } } }
運(yùn)行結(jié)果是:
0
1
2
3
default
=================讓我們加上break試試================
雖然switch-case中的break是可選的,但是break會(huì)較大的影響到運(yùn)行的效果,所以得牢記有無(wú)break的區(qū)別。
以上這篇淺談java switch如果case后面沒有break,會(huì)出現(xiàn)什么情況?就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/xldmx/article/details/82014701