最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?空和null的區(qū)別

 更新時(shí)間:2024年04月08日 15:59:32   作者:二哈喇子!  
本文主要介紹了Java?空和null的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言 StringUtils

提示:這里可以添加本文要記錄的大概內(nèi)容:

StringUtils 是 Apache Commons Lang 庫(kù)中提供的一個(gè)工具類,專為處理 java.lang.String 類型的對(duì)象而設(shè)計(jì)。這個(gè)類提供了大量靜態(tài)方法,用于執(zhí)行各種常見(jiàn)的字符串操作,如檢查空值、空白字符處理、比較、查找、截取、轉(zhuǎn)換、拆分、拼接、填充、修剪等。StringUtils 類旨在作為 Java 標(biāo)準(zhǔn)庫(kù)中 String 類方法的補(bǔ)充,提供更加便捷、高效且 null 安全的字符串處理功能。

以下幾個(gè)方面概括了 StringUtils 的核心特點(diǎn)和用途:

  • Null-safe 字符串操作:
    StringUtils 方法通常會(huì)處理 null 值輸入,避免直接調(diào)用 String 類方法時(shí)可能引發(fā)的 NullPointerException。例如,StringUtils.isEmpty(null) 會(huì)返回 true,而不是拋出異常。

  • 空值與空白字符檢查:
    提供了一系列方法用于檢查字符串是否為空、空字符串、僅包含空白字符或非空白字符:

    • isEmpty(String str): 檢查字符串是否為 null 或長(zhǎng)度為 0。
    • isNotEmpty(String str): 恰好與 isEmpty 相反,檢查字符串是否非空(既不是 null 也不是長(zhǎng)度為 0)。
    • isBlank(String str): 檢查字符串是否為 null、長(zhǎng)度為 0 或僅包含空白字符(如空格、制表符、換行符等)。
    • isNotBlank(String str): 恰好與 isBlank 相反,檢查字符串是否非空且非空白。
  • 字符串修剪:
    提供了方法來(lái)去除字符串兩端的空白字符:

    • trim(String str): 返回去除兩端空白字符后的字符串副本。
    • trimToNull(String str): 去除兩端空白字符,若結(jié)果為空字符串,則返回 null。
    • trimToEmpty(String str): 去除兩端空白字符,若輸入為 null,則返回空字符串。
  • 字符串比較:
    提供了多種字符串比較方式,包括忽略大小寫、忽略空白等:

    • equals(String str1, String str2): 安全地比較兩個(gè)字符串是否相等。
    • equalsIgnoreCase(String str1, String str2): 同上,但忽略大小寫。
    • compare(String str1, String str2): 比較兩個(gè)字符串的字典順序,返回整數(shù)結(jié)果。
  • 字符串拼接與拆分:
    提供了替代 String 類 concat 方法的拼接方法,以及基于特定分隔符的字符串拆分方法:

    • join(Object[] array, String separator): 將數(shù)組中的元素連接成一個(gè)字符串,用指定分隔符隔開(kāi)。
    • split(String str, String separatorChars): 根據(jù)給定的分隔符將字符串分割成一個(gè)字符串?dāng)?shù)組。
  • 以及其他實(shí)用方法:
    包括但不限于查找子字符串、提取子字符串、重復(fù)字符串、檢查字符串是否以特定字符開(kāi)頭/結(jié)尾、轉(zhuǎn)換字符串為駝峰式/下劃線式等。

使用 StringUtils 類的主要優(yōu)點(diǎn)在于其簡(jiǎn)化了字符串處理邏輯,增強(qiáng)了代碼可讀性,同時(shí)提供了對(duì) null 值的安全處理,有助于減少潛在的運(yùn)行時(shí)錯(cuò)誤。在Java開(kāi)發(fā)中,尤其是在處理用戶輸入、數(shù)據(jù)清洗、配置解析、日志記錄、數(shù)據(jù)序列化與反序列化等場(chǎng)景中,StringUtils 類方法常被廣泛應(yīng)用。要使用這些方法,需確保已將 org.apache.commons:commons-lang3 庫(kù)添加到項(xiàng)目的依賴中。

提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

當(dāng)然可以,接下來(lái)我將通過(guò)代碼示例進(jìn)一步詳細(xì)闡述Java中"空"和"null"的區(qū)別:

1. 空(empty):

字符串:

String emptyString = "";
System.out.println(emptyString.length()); // 輸出:0
System.out.println(emptyString.isEmpty()); // 輸出:true

以上代碼創(chuàng)建了一個(gè)空字符串"",其length()方法返回0,表示沒(méi)有包含任何字符。同時(shí),isEmpty()方法返回true,進(jìn)一步驗(yàn)證這是一個(gè)空字符串。

集合:

List<String> emptyList = new ArrayList<>();
System.out.println(emptyList.size()); // 輸出:0
System.out.println(emptyList.isEmpty()); // 輸出:true

Set<String> emptySet = new HashSet<>();
System.out.println(emptySet.size()); // 輸出:0
System.out.println(emptySet.isEmpty()); // 輸出:true

這里創(chuàng)建了兩個(gè)空集合:一個(gè)空的ArrayList和一個(gè)空的HashSet。它們的size()方法都返回0,表示沒(méi)有包含任何元素。isEmpty()方法均返回true,確認(rèn)它們是空集合。

2. null:

引用類型變量:

String nullString = null;
List<String> nullList = null;

try {
    System.out.println(nullString.length()); // 拋出 NullPointerException
    System.out.println(nullList.size()); // 拋出 NullPointerException
} catch (NullPointerException e) {
    System.out.println("Caught NullPointerException");
}

上述代碼中,nullStringnullList分別被賦值為null。當(dāng)試圖調(diào)用它們的length()size()方法時(shí),會(huì)拋出NullPointerException,因?yàn)樗鼈儾⑽粗赶蛉魏螌?shí)際對(duì)象。在實(shí)際編程中,需要通過(guò)條件判斷或使用Objects.requireNonNull()等方法來(lái)避免此類異常。

基本類型變量:

int primitiveInt = 0;
Integer objectInt = null;

System.out.println(primitiveInt); // 輸出:0
System.out.println(objectInt); // 輸出:null

這里展示了基本類型變量(primitiveInt)與包裝類型變量(objectInt)的區(qū)別?;绢愋妥兞坎荒苋?code>null值,如primitiveInt被賦值為0,輸出其值為0。而包裝類型變量可以取null值,如objectInt被賦值為null,輸出其值為null。

3. isBlank

isBlank 包括了 empty 的檢查范圍,即 null 和空字符串

StringUtils.isBlank :是空字符串、只包含空白字符
!StringUtils.isBlank:非空字符串、不只包含空白字符

StringUtils.isBlank 是 Apache Commons Lang 庫(kù)中提供的一個(gè)實(shí)用方法,用于判斷給定的字符串是否為空白。這里的“空白”不僅包括空字符串(""),還包括只包含空白字符(如空格、制表符、換行符等)的字符串。具體來(lái)說(shuō),StringUtils.isBlank 方法的行為如下:

  • 空字符串 (""):如果輸入的字符串長(zhǎng)度為零(即沒(méi)有任何字符),則認(rèn)為是空白。

  • 只包含空白字符的字符串:如果輸入的字符串中所有字符都是空白字符,如空格(' ', ASCII 32)、制表符(\t, ASCII 9)、換行符(\n, ASCII 10)、回車符(\r, ASCII 13)以及其他Unicode空白字符(如不間斷空格、窄空格等),則認(rèn)為是空白。

  • 非空白字符串:如果輸入的字符串包含至少一個(gè)非空白字符,則認(rèn)為不是空白。

簡(jiǎn)而言之,StringUtils.isBlank 方法旨在檢測(cè)一個(gè)字符串是否既無(wú)實(shí)質(zhì)內(nèi)容又無(wú)意義,即要么完全沒(méi)有字符,要么全部由空白字符組成。在編程實(shí)踐中,此方法常用于數(shù)據(jù)驗(yàn)證、清理或格式化,幫助開(kāi)發(fā)者快速判斷一個(gè)字符串是否需要進(jìn)一步處理或是否可以視為無(wú)效輸入。

使用示例:

import org.apache.commons.lang3.StringUtils;

public class Example {
    public static void main(String[] args) {
        String emptyString = "";
        String whitespaceString = "     ";
        String nonEmptyString = "Hello, World!";

        System.out.println(StringUtils.isBlank(emptyString)); // 輸出:true
        System.out.println(StringUtils.isBlank(whitespaceString)); // 輸出:true
        System.out.println(StringUtils.isBlank(nonEmptyString)); // 輸出:false
    }
}

在這個(gè)示例中,StringUtils.isBlank 分別判斷了空字符串、只包含空白字符的字符串和非空白字符串,輸出結(jié)果反映了它們是否被識(shí)別為空白。

總結(jié):

通過(guò)上述代碼示例,我們可以更直觀地看到Java中"空"(empty)和"null"的區(qū)別:

  • “空”(empty)表示容器(如字符串、集合等)內(nèi)沒(méi)有內(nèi)容,它們是實(shí)際存在的對(duì)象,可以進(jìn)行各種對(duì)象操作(如計(jì)算長(zhǎng)度、檢查是否為空等),但通常不包含有意義的數(shù)據(jù)。
  • "null"表示引用沒(méi)有指向任何對(duì)象,對(duì)null引用進(jìn)行對(duì)象方法調(diào)用或?qū)傩栽L問(wèn)會(huì)拋出NullPointerException。在使用引用類型變量時(shí),需要特別注意處理可能的null值,以避免運(yùn)行時(shí)異常。基本類型變量不能取null值。

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

相關(guān)文章

  • Spring概述和快速構(gòu)建的方式

    Spring概述和快速構(gòu)建的方式

    Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器(框架),Spring使用基本的JavaBean來(lái)完成以前只可能由EJB完成的事情,本文給大家介紹spring概述和快速構(gòu)建方式,一起看看吧
    2021-06-06
  • 手把手教你SpringBoot快速集成Swagger的配置過(guò)程

    手把手教你SpringBoot快速集成Swagger的配置過(guò)程

    這篇文章主要介紹了手把手教你SpringBoot快速集成Swagger的配置過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • 詳解如何使用Java流API構(gòu)建樹(shù)形結(jié)構(gòu)數(shù)據(jù)

    詳解如何使用Java流API構(gòu)建樹(shù)形結(jié)構(gòu)數(shù)據(jù)

    在實(shí)際開(kāi)發(fā)中,構(gòu)建樹(shù)狀層次結(jié)構(gòu)是常見(jiàn)需求,本文主要為大家詳細(xì)介紹了如何使用Java 8 Stream API將扁平化的菜單數(shù)據(jù)轉(zhuǎn)換為具有層級(jí)關(guān)系的樹(shù)形結(jié)構(gòu),需要的可以參考下
    2024-04-04
  • SpringBoot?整合?Quartz?定時(shí)任務(wù)框架詳解

    SpringBoot?整合?Quartz?定時(shí)任務(wù)框架詳解

    這篇文章主要介紹了SpringBoot整合Quartz定時(shí)任務(wù)框架詳解,Quartz是一個(gè)完全由Java編寫的開(kāi)源作業(yè)調(diào)度框架,為在Java應(yīng)用程序中進(jìn)行作業(yè)調(diào)度提供了簡(jiǎn)單卻強(qiáng)大的機(jī)制
    2022-08-08
  • java實(shí)現(xiàn)TCP socket和UDP socket的實(shí)例

    java實(shí)現(xiàn)TCP socket和UDP socket的實(shí)例

    這篇文章主要介紹了本文主要介紹了java實(shí)現(xiàn)TCP socket和UDP socket的實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Spring MVC 更靈活的控制 json 返回問(wèn)題(自定義過(guò)濾字段)

    Spring MVC 更靈活的控制 json 返回問(wèn)題(自定義過(guò)濾字段)

    本篇文章主要介紹了Spring MVC 更靈活的控制 json 返回問(wèn)題(自定義過(guò)濾字段),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • java重寫(@Override)介紹以及舉例說(shuō)明

    java重寫(@Override)介紹以及舉例說(shuō)明

    這篇文章主要給大家介紹了關(guān)于java重寫(@Override)介紹以及舉例說(shuō)明的相關(guān)資料,在Java中@Override注解用于表示方法重寫(覆蓋)了父類的方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Java 3D入門之基本圖形功能 附源碼

    Java 3D入門之基本圖形功能 附源碼

    Java3D API是Sun定義的用于實(shí)現(xiàn)3D顯示的接口。3D技術(shù)是底層的顯示技術(shù),Java3D提供了基于Java的上層接口。Java3D把OpenGL和DirectX這些底層技術(shù)包裝在Java接口中。這種全新的設(shè)計(jì)使3D技術(shù)變得不再繁瑣且可以加入到J2SE、J2EE的整套架構(gòu),故保證了Java3D技術(shù)強(qiáng)大的擴(kuò)展性
    2021-10-10
  • Spring?Boot?+?Spring?Batch?實(shí)現(xiàn)批處理任務(wù)的詳細(xì)教程

    Spring?Boot?+?Spring?Batch?實(shí)現(xiàn)批處理任務(wù)的詳細(xì)教程

    這篇文章主要介紹了Spring?Boot+Spring?Batch實(shí)現(xiàn)批處理任務(wù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • Java循環(huán)隊(duì)列與非循環(huán)隊(duì)列的區(qū)別總結(jié)

    Java循環(huán)隊(duì)列與非循環(huán)隊(duì)列的區(qū)別總結(jié)

    今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí)總結(jié),文章圍繞著Java循環(huán)隊(duì)列與非循環(huán)隊(duì)列的區(qū)別展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評(píng)論

临漳县| 山阳县| 宜兴市| 江安县| 保康县| 奉新县| 广州市| 保亭| 江陵县| 砚山县| 原阳县| 彝良县| 永和县| 霍邱县| 仲巴县| 安岳县| 民丰县| 获嘉县| 肥西县| 新余市| 滦平县| 扶沟县| 故城县| 九江县| 县级市| 石林| 高阳县| 阿克| 台中县| 宁国市| 从化市| 大连市| 紫金县| 柘城县| 通城县| 濮阳县| 郓城县| 邹城市| 淅川县| 交口县| 玉树县|