當(dāng)初學(xué)習(xí)java的時(shí)候只是大概記得switch可以接受整形,枚舉類型和String類型(java7),因?yàn)槠綍r(shí)用的并不是太多,所以沒有進(jìn)行過深入的研究。 今天就遇到了一個(gè)這方面的問題,所以有必要把switch可以接受的參數(shù)總結(jié)一下。 首先由byte登場(chǎng),
public class Test{ public static void main(String[] args) { byte x = 2; switch(x){ case 1 : System.out.然后是short類型short x = 2; switch(x){ case 1 : System.out.println("case1"); break; case 2 : System.out.println("case2"); break; case 3 : System.out.println("case3"); break; case 4 : System.out.println("case4"); break;還有int類型
int x = 2; switch(x){ case 1 : System.out.println("case1"); break; case 2 : System.out.println("case2"); break; case 3 : System.out.println("case3"); break; case 4 : System.out.println("case4"); break;再來試試char類型
char x = 1; switch(x){ case 1 : System.out.println("case1"); break; case 2 : System.out.println("case2"); break; case 3 : System.out.println("case3"); break; case 4 : System.out.println("case4"); break;他們的執(zhí)行結(jié)果都是符合預(yù)期的,會(huì)進(jìn)入case2. 然而問題出現(xiàn)在了long類型上,
long x = 2; switch(x){ case 1L : System.out.println("case1"); break; case 2L : System.out.println("case2"); break; case 3L : System.out.println("case3"); break; case 4L : System.out.println("case4"); break; Test.java:6: 錯(cuò)誤: 不兼容的類型: 從long轉(zhuǎn)換到int可能會(huì)有損失 switch(x){這說明switch()只可以接受int或者能夠自動(dòng)提升為int類型的類型,對(duì)于大于int類型的long自然就是拒絕的了。
還有boolean類型,我也做了一下實(shí)驗(yàn)
boolean x = false; switch(x){ case true : System.out.println("case1"); break; case false : System.out.println("case2"); break;Test.java:6: 錯(cuò)誤: 不兼容的類型: boolean無法轉(zhuǎn)換為int結(jié)果也是不可以的同樣的對(duì)于浮點(diǎn)型也會(huì)出現(xiàn)類似的錯(cuò)誤
不兼容的類型: 從float轉(zhuǎn)換到int可能會(huì)有損失 不兼容的類型: 從double轉(zhuǎn)換到int可能會(huì)有損失所以說switch能夠接受的參數(shù)只有byte、char、short、int、枚舉、String(java7)這幾種。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注