最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java switch支持的數(shù)據(jù)類型詳解

 更新時(shí)間:2021年10月11日 09:49:34   作者:加載中巛  
這篇文章主要介紹了Java switch支持的數(shù)據(jù)類型詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

switch支持的數(shù)據(jù)類型

隨著Java的不斷發(fā)展,switch支持的數(shù)據(jù)類型也有了變化,下面就來講述switch如何來實(shí)現(xiàn)對(duì)新增數(shù)據(jù)類型的支持。

支持的數(shù)據(jù)類型

  • 基本數(shù)據(jù)類型:int,byte,short,char
  • 基本數(shù)據(jù)類型封裝類:Integer,Byte,Short,Character
  • 枚舉類型:Enum(JDK 5+開始支持)
  • 字符串類型:String(JDK 7+ 開始支持)

實(shí)現(xiàn)

switch底層是使用int類型來判斷的,int類型是四個(gè)字節(jié)的整數(shù)型類型,所以只要字節(jié)小于或等于4的整數(shù)型類型都是可以轉(zhuǎn)化成int類型的,所以支持byte[1字節(jié)],short[2字節(jié)]都是可以理解的,long[8字節(jié)]超出了int的范圍,因而不支持。

關(guān)于枚舉和字符(串)也是轉(zhuǎn)化為int類型間接實(shí)現(xiàn)的。

關(guān)于這一點(diǎn),我們可以驗(yàn)證的,下面舉例驗(yàn)證switch如何實(shí)現(xiàn)對(duì)枚舉數(shù)據(jù)類型的支持。

直接上代碼:

public class SwitchTest {
	public static void main(String[] args) {
		Color color = Color.YELLOW;
		switch (color) {
		case RED:
			System.out.println("RED:" + color.getName());
			break;
		case YELLOW:
			System.out.println("GREEN:" + color.getName());
			break;
		case BLUE:
			System.out.println("BLUE:" + color.getName());
			break;
		case BLANK:
			System.out.println("BLANK:" + color.getName());
			break;
		default:
			System.out.println("DEFAULT");
			break;
		}
	}
	
	public enum Color {		
		RED("紅色", 1), 
		YELLOW("綠色", 2), 
		BLUE("藍(lán)色", 3), 
		BLANK("黑色", 4);
		
		private String name;
		private int index;
		private Color(String name, int index) {
			this.name = name;
			this.index = index;
		}
		public static String getName(int index) {
			for (Color c : Color.values()) {
				if (c.getIndex() == index) {
					return c.name;
				}
			}
			return null;
		}
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public int getIndex() {
			return index;
		}
		public void setIndex(int index) {
			this.index = index;
		}		
	}
}

編譯后生成了SwitchTest Color.class和SwitchTest.class 兩個(gè)文件,打開編譯成SwitchTest.class的過渡文件SwitchTest Color.class和SwitchTest.class兩個(gè)文件,打開編譯成SwitchTest.class的過渡文件SwitchTest Color.class和SwitchTest.class兩個(gè)文件,打開編譯成SwitchTest.class的過渡文件SwitchTestColor.class:

在這里插入圖片描述

我們發(fā)現(xiàn)多了一個(gè)數(shù)組Color[] arrayOfColor,原來枚舉是再編譯的過程中產(chǎn)生了一個(gè)新的數(shù)組,switch是通過轉(zhuǎn)化成數(shù)組的形式來實(shí)現(xiàn)對(duì)枚舉類型的支持。

我們通過相同的方式也可以看到switch對(duì)String類型的支持也是通過將String轉(zhuǎn)化為int類型得以實(shí)現(xiàn)的,這里就不再贅述。 switch對(duì)四種基本數(shù)據(jù)類型封裝類的支持是通過對(duì)封裝類的拆箱來實(shí)現(xiàn)的點(diǎn)擊了解

注意封裝類不能為null,否則會(huì)報(bào)空指針異常的。

switch支持的10種數(shù)據(jù)類型和注意事項(xiàng)

switch支持的數(shù)據(jù)類型

【切記不支持long、double、float及其包裝類型】

  • 基本數(shù)據(jù)類型:char,byte, short, int
  • 包裝數(shù)據(jù)類型: Character,Byte,Short,Integer
  • 枚舉類型:Enum
  • 字符串類型:String(Jdk 7+ 開始支持)
Color color = Color.RED;
switch (color) {
	case RED:
		System.out.println("red");
		break;
	case BLUE:
		System.out.println("blue");
		break;
	case YELLOW:
		System.out.println("yellow");
		break;
	default:
		System.out.println("default");

switch注意事項(xiàng)

  • case 里面必須跟 break,不然程序會(huì)一個(gè)個(gè) case 執(zhí)行下去,直到最后一個(gè) break 的 case 或者 default 出現(xiàn)
  • case 條件里面只能是常量或者字面常量,而且不能為null,否則編譯報(bào)錯(cuò)
  • default 語句可有可無,最多只能有一個(gè)
  • 建議在switch語句前判斷參數(shù)是否為null:switch的參數(shù)不能為null,否則會(huì)報(bào)空指針異?!緉ull的類型不確定】
public class Demo {
    public static void main(String[] args) {
        new Demo().go(null);
    }
    public void go(String str) {
        switch (str) {
            case "null":
                System.out.println("null");
                break;
            case "123":
                System.out.println(123);
                break;
            default:
                System.out.println("default");
        }
    }
}

在這里插入圖片描述

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解析java.library.path和LD_LIBRARY_PATH的介紹與區(qū)別

    解析java.library.path和LD_LIBRARY_PATH的介紹與區(qū)別

    這篇文章主要介紹了java.library.path和LD_LIBRARY_PATH的介紹與區(qū)別,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • Spring Boot 安全 API 構(gòu)建之加密解密功能的實(shí)踐記錄

    Spring Boot 安全 API 構(gòu)建之加密解密功能的實(shí)踐記錄

    本文詳述了如何在SpringBoot3.3環(huán)境中實(shí)施API加密的最佳實(shí)踐,包括選擇合適的加密算法,密鑰管理,數(shù)據(jù)加密,防止加密漏洞,安全日志記錄,測(cè)試和監(jiān)控等方面,同時(shí),文章也對(duì)RSA非對(duì)稱加密和AES對(duì)稱加密的實(shí)現(xiàn)步驟進(jìn)行了詳細(xì)的解析
    2024-10-10
  • Java中的延遲隊(duì)列DelayQueue源碼解析

    Java中的延遲隊(duì)列DelayQueue源碼解析

    這篇文章主要介紹了Java中的延遲隊(duì)列DelayQueue源碼解析,DelayQueue是一個(gè)支持并發(fā)的無界延遲隊(duì)列,隊(duì)列中的每個(gè)元素都有個(gè)預(yù)定時(shí)間,當(dāng)線程從隊(duì)列獲取元素時(shí),只有到期元素才會(huì)出隊(duì)列,沒有到期元素則阻塞等待,需要的朋友可以參考下
    2023-12-12
  • java中i=i++和j=i++的區(qū)別小結(jié)

    java中i=i++和j=i++的區(qū)別小結(jié)

    這篇文章主要給大家介紹了關(guān)于java中i=i++和j=i++區(qū)別的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • JMeter導(dǎo)入自定義的Jar包的詳解教程

    JMeter導(dǎo)入自定義的Jar包的詳解教程

    這篇文章主要介紹了JMeter導(dǎo)入自定義的Jar包的詳解教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • SpringBoot增強(qiáng)Controller方法@ControllerAdvice注解的使用詳解

    SpringBoot增強(qiáng)Controller方法@ControllerAdvice注解的使用詳解

    這篇文章主要介紹了SpringBoot增強(qiáng)Controller方法@ControllerAdvice注解的使用詳解,@ControllerAdvice,是Spring3.2提供的新注解,它是一個(gè)Controller增強(qiáng)器,可對(duì)controller進(jìn)行增強(qiáng)處理,需要的朋友可以參考下
    2023-10-10
  • JAVA對(duì)字符串進(jìn)行32位MD5加密的實(shí)踐

    JAVA對(duì)字符串進(jìn)行32位MD5加密的實(shí)踐

    本文主要介紹了JAVA對(duì)字符串進(jìn)行32位MD5加密的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Java數(shù)據(jù)結(jié)構(gòu)之堆(優(yōu)先隊(duì)列)詳解

    Java數(shù)據(jù)結(jié)構(gòu)之堆(優(yōu)先隊(duì)列)詳解

    堆(優(yōu)先隊(duì)列)是一種典型的數(shù)據(jù)結(jié)構(gòu),其形狀是一棵完全二叉樹,一般用于求解topk問題。本文將利用Java語言實(shí)現(xiàn)堆,感興趣的可以學(xué)習(xí)一下
    2022-07-07
  • Spring AOP的五種通知方式代碼實(shí)例

    Spring AOP的五種通知方式代碼實(shí)例

    這篇文章主要介紹了Spring AOP的五種通知方式代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • SpringBoot項(xiàng)目yml配置文件不自動(dòng)提示解決方案

    SpringBoot項(xiàng)目yml配置文件不自動(dòng)提示解決方案

    這篇文章主要介紹了SpringBoot項(xiàng)目配置文件.yaml/.yml文件編寫時(shí)沒有自動(dòng)提示的解決方案,文章通過圖文結(jié)合的方式給大家講解的非常詳細(xì),需要的朋友可以參考下
    2024-06-06

最新評(píng)論

三江| 通许县| 鲁山县| 安阳市| 石楼县| 高陵县| 马尔康县| 温宿县| 渑池县| 克拉玛依市| 武川县| 永善县| 南城县| 白城市| 惠州市| 肃南| 信阳市| 房产| 镇赉县| 蕲春县| 连州市| 江安县| 扎兰屯市| 巫山县| 杂多县| 颍上县| 五指山市| 清原| 彭泽县| 大悟县| 南乐县| 安仁县| 定西市| 海淀区| 宜兰县| 阿鲁科尔沁旗| 龙口市| 东山县| 缙云县| 九江县| 光山县|