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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中的null类型---有关null的9件事

發布時間:2024/4/17 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中的null类型---有关null的9件事 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘自?https://blog.csdn.net/qq_25077777/article/details/80174763

?

今天聽到一個問題,java中的null類型,null竟然是一種類型

????????? ?java語言中有兩種類型,一種是基本類型,還有一種是引用類型。還有一個特殊的null類型即表達式null的類型,它沒有名字。

????????? ? 因為null類型沒有名字,所以不可能聲明為null類型的變量或者轉換為null類型。

????????? ? null引用是null類型表達式唯一可能的值。

????????? ? null引用可以轉換為任意引用類型。

????????? ? 實際上,程序員可以忽略null類型,可以認為null僅僅是一個可以稱為任何引用類型的特殊符號。

????????? ? 一個null類型(null(空)引用是這種類型的唯一的一個值),可以賦值給任意類型,將返回一個該類型對象的空引用(其實還是null)。

?

????????? ? 對于java程序員來說,null是令人頭痛的東西。時常會受到空指針異常的騷擾。所以要好好了解一下null,確保正確使用null。

????? ? 關于null的9件事

? ? 1)?? ?首先,null是java中的關鍵字,像public、static、final。它是大小寫敏感的,你不能將null寫成Null或NULL,編譯器將不能識別他們然后報錯。

????????????? ?現在,當你在敲代碼的時候,IDE可以糾正這個錯誤。

? ? 2)?? ? 就像每種原始類型都有默認值一樣,int默認值為0,boolean的默認值為false,null是任何引用類型的默認值,不嚴格的說是所有object類型的默認值。就像你創建了一個布爾類型的變量,它將false作為自己的默認值,java中的任何引用變量都將null作為默認值。這對所有變量都是適用的,如成員變量、局部變量、實例變量、靜態變量(但當你使用一個沒有初始化的局部變量,編譯器會警告你)。

?

????? ? 這對靜態和非靜態的object來說都是正確的。就像你在這里看到的這樣,myObj定義為靜態引用,所以可以在主方法里直接使用它。注意:主方法是靜態方法,不可使用非靜態變量。

????? ? 3)?? ? 要澄清一些誤解,null既不是對象也不是一種類型,它僅是一種特殊的值,你可以將其賦予任何引用類型,你也可以將null轉化成任何類型,

?

????????可以看到idea并沒有報錯,可以正常編譯。在編譯和運行時期,將null強制轉換成任何引用類型都是可行的,在運行時期都不會拋出空指針異常。

????? ? 4)? ? null可以賦值給引用變量,不能將null賦值給基本類型變量,如int、double、float、boolean。

?

???? ? 可以看到,直接將null賦值給基本類型會出現編譯錯誤。但將null賦值給包裝類object,然后將object賦給各自的基本類型,編譯不會報錯,但運行會空指針,這是自動拆箱導致的。

????? ? 5)? ? 任何含有null值的包裝類在java拆箱生成基本數據類型時候都會拋出一個空指針異常。

?

?

???????????????????這段代碼看起來非常簡單并且沒有錯誤。你所做的一切是找到一個數字在數組中出現了多少次,?這是Java數組中典型的尋找重復的技術。開發者首先得到以前的數值,然后再加一,最后把值放回Map里。程序員可能會以為,調用put方法時,自動裝箱會自己處理好將int裝箱成Interger,但是他忘記了當一個數字沒有計數值的時候,HashMap的get()方法將會返回null,而不是0,因為Integer的默認值是null而不是0。當把null值傳遞給一個int型變量的時候自動裝箱將會返回空指針異常。設想一下,如果這段代碼在一個if嵌套里,沒有在測試環境下運行,但是你一旦放在生產環境里,BOOM:-),是不是美茲茲。

????????????? ? 6)?? ? 如果使用了帶有null值的引用類型的變量,instanceof操作會返回false

?

? ? 這是instanceof操作一個很重要的特性,使得對強制類型轉換檢查很有用

????????????????? ? 7)? ? 可以使用靜態方法來使用一個值為null的引用類型變量。因為靜態方法使用靜態類型綁定,不會拋空指針異常

?

???????????????????? 8)????? ? 可以將null傳遞給方法使用,這時方法可以接收任何引用類型,如 public void print(Object obj) 可以這樣調用print(null).編譯可以通過,但結果就取決去你的方法了。這個例子中的print方法,不會拋出空指針異常,只是退出,業務邏輯允許的話,推薦使用null安全的方法。

????????????????? ? 9)? ? 可以使用== 或者 != 操作來比較null值,但是不能使用其他算法或者邏輯操作,如大于、小于。與SQL不同,java中的null==null會返回true;

?

? ? ? ? ? ? ? ? 避免空指針異常可以使你的代碼變的null安全。

?????????????????敲黑板,劃重點!!!!——————>null是任何一個引用類型變量的默認值,在java中不能使用null引用來調用任何instance方法或者instance變量。

轉載于:https://www.cnblogs.com/xinruyi/p/11186151.html

總結

以上是生活随笔為你收集整理的java中的null类型---有关null的9件事的全部內容,希望文章能夠幫你解決所遇到的問題。

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