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

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

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

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

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

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

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

實現(xiàn)

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

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

關(guān)于這一點(diǎn),我們可以驗證的,下面舉例驗證switch如何實現(xiàn)對枚舉數(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 兩個文件,打開編譯成SwitchTest.class的過渡文件SwitchTest Color.class和SwitchTest.class兩個文件,打開編譯成SwitchTest.class的過渡文件SwitchTest Color.class和SwitchTest.class兩個文件,打開編譯成SwitchTest.class的過渡文件SwitchTestColor.class:

在這里插入圖片描述

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

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

注意封裝類不能為null,否則會報空指針異常的。

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

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注意事項

  • case 里面必須跟 break,不然程序會一個個 case 執(zhí)行下去,直到最后一個 break 的 case 或者 default 出現(xiàn)
  • case 條件里面只能是常量或者字面常量,而且不能為null,否則編譯報錯
  • default 語句可有可無,最多只能有一個
  • 建議在switch語句前判斷參數(shù)是否為null:switch的參數(shù)不能為null,否則會報空指針異?!緉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");
        }
    }
}

在這里插入圖片描述

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

相關(guān)文章

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

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

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

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

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

    Java中的延遲隊列DelayQueue源碼解析

    這篇文章主要介紹了Java中的延遲隊列DelayQueue源碼解析,DelayQueue是一個支持并發(fā)的無界延遲隊列,隊列中的每個元素都有個預(yù)定時間,當(dāng)線程從隊列獲取元素時,只有到期元素才會出隊列,沒有到期元素則阻塞等待,需要的朋友可以參考下
    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ì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • JMeter導(dǎo)入自定義的Jar包的詳解教程

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

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

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

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

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

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

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

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

    Spring AOP的五種通知方式代碼實例

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

    SpringBoot項目yml配置文件不自動提示解決方案

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

最新評論

南木林县| 商水县| 峨边| 扶沟县| 安阳市| 枣阳市| 宝应县| 长寿区| 什邡市| 高台县| 靖西县| 南京市| 隆尧县| 棋牌| 娱乐| 阳朔县| 昂仁县| 夏邑县| 宁乡县| 华蓥市| 石嘴山市| 德钦县| 大连市| 洞口县| 高邮市| 道真| 开远市| 孟村| 新营市| 河津市| 淮阳县| 武陟县| 朝阳市| 新野县| 娄底市| 会东县| 丹东市| 金沙县| 怀仁县| 安西县| 邯郸县|