switch循環(huán)所支持的數(shù)據(jù)類型案例分析
在java值有三大循環(huán)與句,for swichwhile 除此之外還有一個(gè)與while相差無幾的do....while;
swich循環(huán)語法如下:
switch (key) {
case value:
break;
default:
break;
}
其中的key值就是變量,這個(gè)變量的類型可以為什么呢?
答:在JDK1.5之前,switch循環(huán)只支持byte short char int四種數(shù)據(jù)類型.JDK1.5在switch循環(huán)中增加了枚舉類與byteshortcharint的包裝類,對(duì)四個(gè)包裝類的支持是因?yàn)閖ava編譯器在底層手動(dòng)進(jìn)行拆箱,而對(duì)枚舉類的支持是因?yàn)槊杜e類有一個(gè)ordinal方法,該方法實(shí)際上是一個(gè)int類型的數(shù)值.jdk1.7開始支持String類型,但實(shí)際上String類型有一個(gè)hashCode算法,結(jié)果也是int類型.而byteshortchar類型可以在不損失精度的情況下向上轉(zhuǎn)型成int類型.所以總的來說,可以認(rèn)為switch中只支持int.
我們來看數(shù)據(jù)類型的大小 (從小到大):byte—> short, char—> int —> long—>float —> double
我們清楚數(shù)據(jù)類型小轉(zhuǎn)大是不需要強(qiáng)轉(zhuǎn)的所以int以下包含int就是swich循環(huán)中key值所包含的數(shù)據(jù)類型
下面有一個(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ù)類型有:byte,short ,char,int。以及他們封裝類型如:Integer Byte等...
ps:下面看下switch支持的數(shù)據(jù)類型
在JDK1.5之前,switch循環(huán)只支持byte short char int四種數(shù)據(jù)類型。JDK1.5 在switch循環(huán)中增加了枚舉類與byte short char int的包裝類,對(duì)四個(gè)包裝類的支持是因?yàn)閖ava編譯器在底層手動(dòng)進(jìn)行拆箱,而對(duì)枚舉類的支持是因?yàn)槊杜e類有一個(gè)ordinal方法,該方法實(shí)際上是一個(gè)int類型的數(shù)值。
JDK1.7開始支持String類型,但實(shí)際上String類型有一個(gè)hashCode算法,結(jié)果也是int類型。而byte short char類型可以在不損失精度的情況下向上轉(zhuǎn)型成int類型。所以總的來說,可以認(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中循環(huán)語句中的轉(zhuǎn)移語句 break 和 continue
這篇文章主要介紹了Swift中循環(huán)語句中的轉(zhuǎn)移語句 break 和 continue,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的的朋友參考下2016-12-12
Swift調(diào)用Objective-C編寫的API實(shí)例
這篇文章主要介紹了Swift調(diào)用Objective-C編寫的API實(shí)例,介紹的比較全面和詳細(xì),對(duì)Objective-C代碼的重復(fù)利用有極大好處,的朋友可以參考下2014-07-07
Swift并發(fā)系統(tǒng)并行運(yùn)行多個(gè)任務(wù)使用詳解
這篇文章主要為大家介紹了Swift并發(fā)系統(tǒng)并行運(yùn)行多個(gè)任務(wù)使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
Swift編程中實(shí)現(xiàn)希爾排序算法的代碼實(shí)例
希爾排序是對(duì)插入排序的一種改進(jìn)版本,算法本身并不穩(wěn)定,存在優(yōu)化空間,這里我們來講一下希爾排序的大體思路及Swift編程中實(shí)現(xiàn)希爾排序算法的代碼實(shí)例2016-07-07
SwiftUI學(xué)習(xí)之state和Binding的區(qū)別淺析
這篇文章主要給大家介紹了關(guān)于SwiftUI學(xué)習(xí)之state和Binding區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
RxSwift實(shí)現(xiàn)替換delegate的方法示例
這篇文章主要給大家介紹了關(guān)于RxSwift實(shí)現(xiàn)替換delegate的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用RxSwift具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Swift開發(fā)之使用UIRefreshControl實(shí)現(xiàn)下拉刷新數(shù)據(jù)及uirefreshcontrol使用
本文給大家介紹使用UIRefreshControl實(shí)現(xiàn)下拉刷新數(shù)據(jù),及UIRefreshControl的使用步驟,對(duì)本文感興趣的朋友一起學(xué)習(xí)吧2015-11-11
Swift類型創(chuàng)建之自定義一個(gè)類型詳解
這篇文章主要介紹了Swift類型創(chuàng)建之自定義一個(gè)類型詳解,本文講解了自定義原型、實(shí)現(xiàn)默認(rèn)值、支持基本布爾型初始化、支持Bool類型判斷、支持兼容各們各派的類型、完善OCBool的布爾基因體系等內(nèi)容,需要的朋友可以參考下2015-05-05

