日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java中switch参数传null会引起异常——Java 语法糖

發布時間:2025/3/12 java 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中switch参数传null会引起异常——Java 语法糖 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題

switch 參數不能是null,swicth(null)會報java.lang.NullPointerException異常

查找原因

為什么會這樣呢,查找一下原因:
找到編譯后的class文件,就明白了

總結:

switch 是一個語法糖。switch語句是先計算 param 變量的排序值,然后與枚舉常量的每個排序值進行對比。

源碼中的switch(param) 調用了String 的hashCode方法。

switch 方法只支持int 類型的匹配,其他基本類型都會被語法糖轉換為整型來做判斷和匹配。

總結一下,java switch 參數不能是null,swicth(null)會報java.lang.NullPointerException異常。

擴展

Java 其它語法糖

語法糖(Syntactic Sugar),也叫糖衣語法,是英國計算機科學家彼得·約翰·蘭達(Peter J. Landin)發明的一個術語。指的是,在計算機語言中添加某種語法,這種語法能使程序員更方便的使用語言開發程序,同時增強程序代碼的可讀性,避免出錯的機會;但是這種語法對語言的功能并沒有影響。

泛型:

與C#中的泛型相比,Java的泛型可以算是“偽泛型”了。在C#中,不論是在程序源碼中、在編譯后的中間語言,還是在運行期泛型都是真實存在的。Java則不同,Java的泛型只在源代碼存在,只供編輯器檢查使用,編譯后的字節碼文件已擦除了泛型類型,同時在必要的地方插入了強制轉型的代碼。

自動拆箱和裝箱:

自動拆箱/裝箱是在編譯期,依據代碼的語法,決定是否進行拆箱和裝箱動作。

裝箱過程:把基本類型用它們對應的包裝類型進行包裝,使基本類型具有對象特征。

拆箱過程:與裝箱過程相反,把包裝類型轉換成基本類型。

foreach 循環:

Foreach要求被歷遍的對象要實現Iterable接口,由此可想而知,foreach迭代也是調用底層的迭代器實現的。

枚舉:

枚舉類型其實并不復雜,在JVM字節碼文件結構中,并沒有“枚舉”這個類型。其實源程序的枚舉類型,會在編譯期被編譯成一個普通了類。利用繼承和反射來做到的。

總結

以上是生活随笔為你收集整理的Java中switch参数传null会引起异常——Java 语法糖的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。