国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本精品一区二区三区在线观看视频 | 成人爽视频 | 亚洲国产精品久久久久久久 | 国产精品一区二区视频 | 国产中文| 国产精品成人av | 精品国产久| 在线欧美| 中文字幕 国产 | 伊大人久久香线焦宗合一75大 | 亚洲在线一区二区 | 日韩免费观看视频 | 99亚洲精品 | 中文字幕在线观看一区二区三区 | 精品久久中文字幕 | 欧美日韩中文字幕 | 毛片在线免费 | 日韩av在线中文字幕 | 成人在线小视频 | 精品国产一区二区国模嫣然 | 国产高清在线a视频大全 | 久久久久久网站 | 午夜av影院 | 五月天婷婷免费视频 | 成人国产精品156免费观看 | 国产精品免费观看 | 一区二区三区在线观看视频 | 欧美精品一区二 | www.国产一区 | 成人久久久久久久 | 久久久精品在线 | 欧美精品一区二区三区蜜桃视频 | 欧美精品理论片大全 | 日韩超碰 | 天堂一区 | 亚洲精品一区二区三区不 | 国产成人免费视频网站高清观看视频 | 国产高清精品在线 | 欧美激情一区二区三区 | 日韩在线视频观看 | 日韩城人网站 |