欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

在這里插入圖片描述

⼤⼩寫敏感

⾸先,null 是 Java 中的 關(guān)鍵字 ,像是 public、static、final。它是⼤⼩寫敏感的,你不能將 null 寫 成 Null 或 NULL,編輯器將不能識別它們?nèi)缓髨箦e。

在這里插入圖片描述

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

null 是任何引⽤類型的初始值

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

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

null 只是⼀種特殊的值

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

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);
}

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

null 只能賦值給引⽤變量,不能賦值給基本類型變量。

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

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

使⽤了帶有 null 值的引⽤類型變量, instanceof instanceof 操作會返回

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 操作符⼀個很重要的特性,使得對類型強制轉(zhuǎn)換檢查很有⽤靜態(tài)變量為 null 調(diào)⽤靜態(tài)⽅法不會拋出 NullPointerException。因為靜態(tài)⽅法使⽤了靜態(tài)綁定。

使⽤ Null-Safe ⽅法

你應(yīng)該使⽤ null-safe 安全的⽅法,java 類庫中有很多⼯具類都提供了靜態(tài)⽅法,例如基本數(shù)據(jù)類型的包裝類,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 沒有賦值,所以默認為null,使⽤ String.valueOf(number) 靜態(tài)⽅法沒有拋出空指針異常,但是使⽤ toString() 卻拋出了空指針異常。所以盡量使⽤對象的靜態(tài)⽅法。

null 判斷

你可以使⽤ == 或者 != 操作來⽐較 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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot使用Captcha生成驗證碼

    SpringBoot使用Captcha生成驗證碼

    這篇文章主要介紹了SpringBoot如何使用Captcha生成驗證碼,幫助大家更好的理解和學習使用SpringBoot,感興趣的朋友可以了解下
    2021-04-04
  • SpringMVC 整合SSM框架詳解

    SpringMVC 整合SSM框架詳解

    這篇文章主要介紹了SpringMVC 整合SSM框架詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Springboot FatJa原理機制源碼解析

    Springboot FatJa原理機制源碼解析

    這篇文章主要為大家介紹了Springboot FatJa原理機制源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • springboot項目打包成jar包的圖文教程

    springboot項目打包成jar包的圖文教程

    有時候我們會用IDEA來開發(fā)一些小工具,需要打成可運行的JAR包,這篇文章主要給大家介紹了關(guān)于springboot項目打包成jar包的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • SpringMVC中轉(zhuǎn)發(fā)與重定向的區(qū)別淺析

    SpringMVC中轉(zhuǎn)發(fā)與重定向的區(qū)別淺析

    這篇文章主要給大家介紹了關(guān)于SpringMVC中轉(zhuǎn)發(fā)與重定向的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • spring-data-redis 動態(tài)切換數(shù)據(jù)源的方法

    spring-data-redis 動態(tài)切換數(shù)據(jù)源的方法

    最近遇到了一個麻煩的需求,我們需要一個微服務(wù)應(yīng)用同時訪問兩個不同的 Redis 集群,一般情況下我們會怎么處理呢,下面通過場景分析給大家介紹spring-data-redis 動態(tài)切換數(shù)據(jù)源的方法,感興趣的朋友一起看看吧
    2021-08-08
  • SpringBoot注冊Servlet的三種方法詳解

    SpringBoot注冊Servlet的三種方法詳解

    這篇文章主要介紹了SpringBoot注冊Servlet的三種方法詳解,教你如何Spring Boot 注冊 Servlet、Filter、Listener,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • SpringMVC文件上傳 多文件上傳實例

    SpringMVC文件上傳 多文件上傳實例

    這篇文章主要介紹了SpringMVC文件上傳 多文件上傳實例,有需要的朋友可以參考一下
    2014-01-01
  • javaSE基礎(chǔ)java自定義注解原理分析

    javaSE基礎(chǔ)java自定義注解原理分析

    這篇文章主要介紹了javaSE基礎(chǔ)對java自定義注解原理分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多度進步,早日升職加薪
    2021-10-10
  • 前端發(fā)送的請求Spring如何返回一個文件詳解

    前端發(fā)送的請求Spring如何返回一個文件詳解

    這篇文章主要給大家介紹了關(guān)于前端發(fā)送的請求Spring如何返回一個文件的相關(guān)資料,文中通過代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-09-09

最新評論