switch循環(huán)所支持的數(shù)據(jù)類(lèi)型案例分析
在java值有三大循環(huán)與句,for swichwhile 除此之外還有一個(gè)與while相差無(wú)幾的do....while;
swich循環(huán)語(yǔ)法如下:
switch (key) { case value: break; default: break; }
其中的key值就是變量,這個(gè)變量的類(lèi)型可以為什么呢?
答:在JDK1.5之前,switch循環(huán)只支持byte short char int四種數(shù)據(jù)類(lèi)型.JDK1.5在switch循環(huán)中增加了枚舉類(lèi)與byteshortcharint的包裝類(lèi),對(duì)四個(gè)包裝類(lèi)的支持是因?yàn)閖ava編譯器在底層手動(dòng)進(jìn)行拆箱,而對(duì)枚舉類(lèi)的支持是因?yàn)槊杜e類(lèi)有一個(gè)ordinal方法,該方法實(shí)際上是一個(gè)int類(lèi)型的數(shù)值.jdk1.7開(kāi)始支持String類(lèi)型,但實(shí)際上String類(lèi)型有一個(gè)hashCode算法,結(jié)果也是int類(lèi)型.而byteshortchar類(lèi)型可以在不損失精度的情況下向上轉(zhuǎn)型成int類(lèi)型.所以總的來(lái)說(shuō),可以認(rèn)為switch中只支持int.
我們來(lái)看數(shù)據(jù)類(lèi)型的大小 (從小到大):byte—> short, char—> int —> long—>float —> double
我們清楚數(shù)據(jù)類(lèi)型小轉(zhuǎn)大是不需要強(qiáng)轉(zhuǎn)的所以int以下包含int就是swich循環(huán)中key值所包含的數(shù)據(jù)類(lèi)型
下面有一個(gè)小例題:
public static void main(String[] args) { /*byte x = 1; short x = 1; String x = "1"; long x = 1; double x = 1; int x =1; char x =1; Integer x = new Integer("1");*/ switch (x) { case 1: System.out.println("One"); break; case 2: System.out.println("Two"); break; } }
總結(jié):swich所支持的基本數(shù)據(jù)類(lèi)型有:byte,short ,char,int。以及他們封裝類(lèi)型如:Integer Byte等...
ps:下面看下switch支持的數(shù)據(jù)類(lèi)型
在JDK1.5之前,switch循環(huán)只支持byte short char int四種數(shù)據(jù)類(lèi)型。JDK1.5 在switch循環(huán)中增加了枚舉類(lèi)與byte short char int的包裝類(lèi),對(duì)四個(gè)包裝類(lèi)的支持是因?yàn)閖ava編譯器在底層手動(dòng)進(jìn)行拆箱,而對(duì)枚舉類(lèi)的支持是因?yàn)槊杜e類(lèi)有一個(gè)ordinal方法,該方法實(shí)際上是一個(gè)int類(lèi)型的數(shù)值。
JDK1.7開(kāi)始支持String類(lèi)型,但實(shí)際上String類(lèi)型有一個(gè)hashCode算法,結(jié)果也是int類(lèi)型。而byte short char類(lèi)型可以在不損失精度的情況下向上轉(zhuǎn)型成int類(lèi)型。所以總的來(lái)說(shuō),可以認(rèn)為switch中只支持int。
package test.switch_com; public class Demo1_Switch { /** **/ public static void main(String[] args) { checkName("no"); //checkName1(2); } public static void checkName(String op) { switch (op) { case "no": System.out.println("op"); break; case "contains": System.out.println("contains"); break; default: break; } } /*錯(cuò)誤示例 public static void checkName1(long op) { switch (op) { case 1: System.out.println("op"); break; case 2: System.out.println("contains"); break; default: break; } }*/ }
總結(jié)
相關(guān)文章
Swift語(yǔ)言實(shí)現(xiàn)地圖坐標(biāo)彈跳動(dòng)畫(huà)
這篇文章主要介紹了用Swift語(yǔ)言實(shí)現(xiàn)地圖坐標(biāo)彈跳動(dòng)畫(huà)的方法主要應(yīng)用iOS7來(lái)實(shí)現(xiàn)此功能,需要的朋友可以參考下2015-07-07詳解Swift編程中的for循環(huán)的編寫(xiě)方法
這篇文章主要介紹了Swift編程中的for循環(huán)的編寫(xiě)方法,包括相關(guān)的for...in循環(huán),需要的朋友可以參考下2015-11-11Swift 中如何使用 Option Pattern 改善可選項(xiàng)的 API 設(shè)計(jì)
這篇文章主要介紹了Swift 中如何使用 Option Pattern 改善可選項(xiàng)的 API 設(shè)計(jì),幫助大家更好的進(jìn)行ios開(kāi)發(fā),感興趣的朋友可以了解下2020-10-10在 Swift 中測(cè)試 UIAlertController的方法
這篇文章主要介紹了在 Swift 中測(cè)試 UIAlertController的方法的,需要的朋友可以參考下2015-10-10SpringBoot3.0集成Redis緩存的實(shí)現(xiàn)示例
緩存就是一個(gè)存儲(chǔ)器,常用 Redis作為緩存數(shù)據(jù)庫(kù),本文主要介紹了SpringBoot3.0集成Redis緩存的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03Swift實(shí)現(xiàn)表格視圖單元格單選(2)
這篇文章主要為大家詳細(xì)介紹了Swift實(shí)現(xiàn)表格視圖單元格單選的第二篇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01在一個(gè)項(xiàng)目中同時(shí)使用Swift和Objective-C代碼混合編程的方法
這篇文章主要介紹了在一個(gè)項(xiàng)目中同時(shí)使用Swift和Objective-C代碼的方法,在一個(gè)工程中同時(shí)使用Swift和Objective-C混合語(yǔ)言編程的方法,需要的朋友可以參考下2014-07-07Swift高階函數(shù)contains?allSatisfy?reversed?lexicographicallyPr
這篇文章主要為大家介紹了Swift高階函數(shù)contains?allSatisfy?reversed?lexicographicallyPrecedes用法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06