欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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 語(yǔ)句可有可無,最多只能有一個(gè)
  • 建議在switch語(yǔ)句前判斷參數(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)文章

  • Spring啟動(dòng)流程refresh()源碼深入解析

    Spring啟動(dòng)流程refresh()源碼深入解析

    這篇文章主要給大家介紹了關(guān)于Spring啟動(dòng)流程refresh()源碼深入解析的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java中的synchronized關(guān)鍵字

    Java中的synchronized關(guān)鍵字

    這篇文章主要介紹了Java中的synchronized關(guān)鍵字,synchronized可以保證方法或代碼塊在運(yùn)行時(shí),同一時(shí)刻只有一個(gè)線程可以進(jìn)入到臨界區(qū)(互斥性),同時(shí)它還保證了共享變量的內(nèi)存可見性,下面我們就來看看你文章對(duì)synchronized鎖的介紹,需要的朋友也可以參考一下
    2021-12-12
  • springboot啟動(dòng)不加載bootstrap.yml文件的問題

    springboot啟動(dòng)不加載bootstrap.yml文件的問題

    這篇文章主要介紹了springboot啟動(dòng)不加載bootstrap.yml文件的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • mybatis-plus使用xml自定義sql語(yǔ)句方式

    mybatis-plus使用xml自定義sql語(yǔ)句方式

    這篇文章主要介紹了mybatis-plus使用xml自定義sql語(yǔ)句方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • maven依賴沖突加載順序與解決

    maven依賴沖突加載順序與解決

    這篇文章主要介紹了項(xiàng)目中同時(shí)引用了相同依賴的不同版本,也就是沖突,maven?是如何選擇的,了解了有助于解決項(xiàng)目中的依賴問題,需要的朋友可以參考下
    2024-01-01
  • Java項(xiàng)目中大批量數(shù)據(jù)查詢導(dǎo)致OOM的解決

    Java項(xiàng)目中大批量數(shù)據(jù)查詢導(dǎo)致OOM的解決

    本文主要介紹了Java項(xiàng)目中大批量數(shù)據(jù)查詢導(dǎo)致OOM的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 多線程下怎樣保證OkHttpClient的線程安全

    多線程下怎樣保證OkHttpClient的線程安全

    這篇文章主要介紹了多線程下怎樣保證OkHttpClient的線程安全問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 快速上手Java單元測(cè)試框架JUnit5

    快速上手Java單元測(cè)試框架JUnit5

    今天給大家?guī)淼氖顷P(guān)于Java單元測(cè)試的相關(guān)知識(shí),文章圍繞著Java單元測(cè)試框架JUnit5展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Eclipse 2020-06 漢化包安裝步驟詳解(附漢化包+安裝教程)

    Eclipse 2020-06 漢化包安裝步驟詳解(附漢化包+安裝教程)

    這篇文章主要介紹了Eclipse 2020-06 漢化包安裝步驟(附漢化包+安裝教程),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • SpringMVC適配器模式作用范圍介紹

    SpringMVC適配器模式作用范圍介紹

    適配器這個(gè)詞我們應(yīng)該很熟悉,天天都在使用,手機(jī)充電時(shí),電源線頭頭就叫電源適配器,干什么用的呢?把220V電壓轉(zhuǎn)換成手機(jī)充電時(shí)使用的電壓,那么適配器是不是很好理解了,下面看一下
    2023-04-04

最新評(píng)論