一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java switch支持的數據類型詳解

Java switch支持的數據類型詳解

2022-02-15 15:35加載中巛 Java教程

這篇文章主要介紹了Java switch支持的數據類型詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

switch支持的數據類型

隨著Java的不斷發展,switch支持的數據類型也有了變化,下面就來講述switch如何來實現對新增數據類型的支持。

支持的數據類型

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

實現

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

關于枚舉和字符(串)也是轉化為int類型間接實現的。

關于這一點,我們可以驗證的,下面舉例驗證switch如何實現對枚舉數據類型的支持。

直接上代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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("藍色", 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:

Java switch支持的數據類型詳解

我們發現多了一個數組Color[] arrayOfColor,原來枚舉是再編譯的過程中產生了一個新的數組,switch是通過轉化成數組的形式來實現對枚舉類型的支持。

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

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

switch支持的10種數據類型和注意事項

switch支持的數據類型

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

  • 基本數據類型:char,byte, short, int
  • 包裝數據類型: Character,Byte,Short,Integer
  • 枚舉類型:Enum
  • 字符串類型:String(Jdk 7+ 開始支持)
?
1
2
3
4
5
6
7
8
9
10
11
12
13
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 執行下去,直到最后一個 break 的 case 或者 default 出現
  • case 條件里面只能是常量或者字面常量,而且不能為null,否則編譯報錯
  • default 語句可有可無,最多只能有一個
  • 建議在switch語句前判斷參數是否為null:switch的參數不能為null,否則會報空指針異常【null的類型不確定】
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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");
        }
    }
}

Java switch支持的數據類型詳解

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/qq_37893505/article/details/91538833

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 高清国产精品久久 | 欧美╳bbbb | 精品久久久噜噜噜久久7 | 九九精品视频一区二区三区 | 四虎影院免费在线播放 | 冰山美人调教耻辱h | 四虎影院2019 | 精品视频免费在线观看 | 性做久久久久久久久老女人 | sss在线播放 | 99精品视频在线观看免费播放 | 国产九九在线 | 99视频免费在线观看 | 奶茶视频有容乃大 | 国产有码在线 | 369手机看片 | 男人视频网站 | 亚洲一区二区三区福利在线 | 亚洲国产综合精品 | 男人天堂2023 | 奇米白色 | 久久99国产视频 | 国产欧美综合一区二区 | 国产精品免费看久久久香蕉 | 欧美视频在线播放观看免费福利资源 | 草莓茄子丝瓜番茄小蝌蚪 | 91在线亚洲综合在线 | 国产精品va在线观看不 | 5151hh四虎国产精品 | 国产精品极品美女自在线 | 亚洲精品久久久打桩机 | 香蕉久久ac一区二区三区 | 欧洲兽皇 | 高清男的插曲女的 欢迎你老狼 | 精品91自产拍在线观看99re | 国产性视频 | 91短视频版高清在线观看免费 | 丝瓜茄子绿巨人秋葵榴莲污 | 色先锋 影音先锋a 资源站 | 国产美女做爰免费视频网址 | 青久草视频 |