亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中關(guān)于 null 的幾種處理方式詳解

 更新時(shí)間:2021年10月25日 09:38:45   作者:Hello World呀  
這篇文章主要介紹了Java中關(guān)于 null 的幾種處理方式,關(guān)于 null ,你應(yīng)該知道下面這幾件事情來(lái)有效的了解 null ,從而避免很多由 null 引起的錯(cuò)誤,具體細(xì)節(jié)跟隨小編一起學(xué)習(xí)下吧

對(duì)于 Java 程序員來(lái)說(shuō),空指針⼀直是惱⼈的問(wèn)題,我們?cè)陂_(kāi)發(fā)中經(jīng)常會(huì)受到 NullPointerException 的異常。Java 的發(fā)明者也承認(rèn)這是⼀個(gè)巨⼤的設(shè)計(jì)錯(cuò)誤。那么關(guān)于 null ,你應(yīng)該知道下⾯這⼏件事情來(lái)有效的了解 null ,從⽽避免很多由 null 引起的錯(cuò)誤。

在這里插入圖片描述

⼤⼩寫(xiě)敏感

⾸先,null 是 Java 中的 關(guān)鍵字 ,像是 public、static、final。它是⼤⼩寫(xiě)敏感的,你不能將 null 寫(xiě) 成 Null 或 NULL,編輯器將不能識(shí)別它們?nèi)缓髨?bào)錯(cuò)。

在這里插入圖片描述

這個(gè)問(wèn)題已經(jīng)⼏乎不會(huì)出現(xiàn),因?yàn)?eclipse 和 Idea 編譯器已經(jīng)給出了編譯器提示,所以你不⽤考慮這
個(gè)問(wèn)題。

null 是任何引⽤類(lèi)型的初始值

null 是所有引⽤類(lèi)型的默認(rèn)值,Java 中的任何引⽤變量都將null作為默認(rèn)值,也就是說(shuō)所有 Object 類(lèi)下的引⽤類(lèi)型默認(rèn)值都是 null。這對(duì)所有的引⽤變量都適⽤。就像是基本類(lèi)型的默認(rèn)值⼀樣,例如 int的默認(rèn)值是 0,boolean 的默認(rèn)值是 false。
下⾯是基本數(shù)據(jù)類(lèi)型的初始值

類(lèi)型 初始值
booleab false
char /u0000
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d

null 只是⼀種特殊的值

null 既不是對(duì)象也不是⼀種類(lèi)型,它僅是⼀種特殊的值,你可以將它賦予任何類(lèi)型,你可以將 null 轉(zhuǎn)換為任何類(lèi)型

public static void main(String[] args) {
 String str = null;
 Integer itr = null;
 Double dou = null;
 Integer integer = (Integer) null;
 String string = (String)null;
 System.out.println("integer = " + integer);
 System.out.println("string = " + string);
}

你可以看到在編譯期和運(yùn)⾏期內(nèi),將 null 轉(zhuǎn)換成任何的引⽤類(lèi)型都是可⾏的,并且不會(huì)拋出空指針異常。

null 只能賦值給引⽤變量,不能賦值給基本類(lèi)型變量。

持有 null 的包裝類(lèi)在進(jìn)⾏⾃動(dòng)拆箱的時(shí)候,不能完成轉(zhuǎn)換,會(huì)拋出空指針異常,并且 null 也不能和基本數(shù)據(jù)類(lèi)型進(jìn)⾏對(duì)⽐

public static void main(String[] args) {
 int i = 0;
 Integer itr = null;
 System.out.println(itr == i);
}

使⽤了帶有 null 值的引⽤類(lèi)型變量, instanceof instanceof 操作會(huì)返回

public static void main(String[] args) {
 Integer isNull = null;
 // instanceof = isInstance ⽅法
 if(isNull instanceof Integer){
 System.out.println("isNull is instanceof Integer");
 }else{
 System.out.println("isNull is not instanceof Integer");
 }
}

這是 instanceof 操作符⼀個(gè)很重要的特性,使得對(duì)類(lèi)型強(qiáng)制轉(zhuǎn)換檢查很有⽤靜態(tài)變量為 null 調(diào)⽤靜態(tài)⽅法不會(huì)拋出 NullPointerException。因?yàn)殪o態(tài)⽅法使⽤了靜態(tài)綁定。

使⽤ Null-Safe ⽅法

你應(yīng)該使⽤ null-safe 安全的⽅法,java 類(lèi)庫(kù)中有很多⼯具類(lèi)都提供了靜態(tài)⽅法,例如基本數(shù)據(jù)類(lèi)型的包裝類(lèi),Integer , Double 等。例如

public class NullSafeMethod {
 private static String number;
 public static void main(String[] args) {
 String s = String.valueOf(number);
 String string = number.toString();
 System.out.println("s = " + s);
 System.out.println("string = " + string);
 }
}

number 沒(méi)有賦值,所以默認(rèn)為null,使⽤ String.valueOf(number) 靜態(tài)⽅法沒(méi)有拋出空指針異常,但是使⽤ toString() 卻拋出了空指針異常。所以盡量使⽤對(duì)象的靜態(tài)⽅法。

null 判斷

你可以使⽤ == 或者 != 操作來(lái)⽐較 null 值,但是不能使⽤其他算法或者邏輯操作,例如⼩于或者⼤于。跟SQL不⼀樣,在Java中 null == null 將返回 true,如下所示:

public class CompareNull {
 private static String str1;
 private static String str2;
 public static void main(String[] args) {
 System.out.println("str1 == str2 ? " + str1 == str2);
 System.out.println(null == null);
 }
}

到此這篇關(guān)于Java中關(guān)于 null 的⼏種處理⽅式的文章就介紹到這了,更多相關(guān)Java null處理⽅式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談java對(duì)象結(jié)構(gòu) 對(duì)象頭 Markword

    淺談java對(duì)象結(jié)構(gòu) 對(duì)象頭 Markword

    這篇文章主要介紹了淺談java對(duì)象結(jié)構(gòu) 對(duì)象頭 Markword,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • Java線(xiàn)程狀態(tài)變換過(guò)程代碼解析

    Java線(xiàn)程狀態(tài)變換過(guò)程代碼解析

    這篇文章主要介紹了Java線(xiàn)程狀態(tài)變換過(guò)程代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java中String對(duì)象的深入理解

    Java中String對(duì)象的深入理解

    String對(duì)象作為Java語(yǔ)言中重要的數(shù)據(jù)類(lèi)型之一,是我們平時(shí)編碼最常用的對(duì)象之一,因此也是內(nèi)存中占據(jù)空間最大的一個(gè)對(duì)象,然而很多人對(duì)它是一知半解,今天我們就來(lái)好好聊一聊這個(gè)既熟悉又陌生的String,需要的朋友可以參考下
    2023-05-05
  • java進(jìn)行文件讀寫(xiě)操作詳解

    java進(jìn)行文件讀寫(xiě)操作詳解

    這篇文章主要介紹了java進(jìn)行文件讀寫(xiě)操作詳解的相關(guān)資料,需要的朋友可以參考下
    2014-10-10
  • JAVA垃圾收集器與內(nèi)存分配策略詳解

    JAVA垃圾收集器與內(nèi)存分配策略詳解

    這篇文章介紹了JAVA垃圾收集器與內(nèi)存分配策略,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-07-07
  • 使用Spring初始化加載InitializingBean()方法

    使用Spring初始化加載InitializingBean()方法

    這篇文章主要介紹了使用Spring初始化加載InitializingBean()方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java使用正則表達(dá)式過(guò)濾html標(biāo)簽

    java使用正則表達(dá)式過(guò)濾html標(biāo)簽

    本篇文章主要介紹了java正則表達(dá)式過(guò)濾html標(biāo)簽,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • Mybatis傳遞多個(gè)參數(shù)進(jìn)行SQL查詢(xún)的用法

    Mybatis傳遞多個(gè)參數(shù)進(jìn)行SQL查詢(xún)的用法

    本文給大家介紹Mybatis傳遞多個(gè)參數(shù)進(jìn)行SQL查詢(xún)的用法的相關(guān)知識(shí),本文還給大家介紹了mybatis通過(guò)Map傳遞多個(gè)參數(shù)和JavaBean傳遞多個(gè)參數(shù),本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-06-06
  • 詳解java各種集合的線(xiàn)程安全

    詳解java各種集合的線(xiàn)程安全

    這篇文章主要介紹了詳解java各種集合的線(xiàn)程安全,小編覺(jué)得挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • 輕松掌握J(rèn)ava適配器模式

    輕松掌握J(rèn)ava適配器模式

    這篇文章主要幫助大家輕松掌握J(rèn)ava適配器模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09

最新評(píng)論