Java?empty、null、blank的區(qū)別小結(jié)
寫(xiě)代碼時(shí)候經(jīng)常遇到判empty、null和blank的情況。這些概念看起來(lái)很相似,但是它們有著不同的含義和用法。本文將介紹這三個(gè)概念的區(qū)別,并分析具體場(chǎng)景該如何做判斷。
empty
empty是指一個(gè)字符串長(zhǎng)度為0/Java集合對(duì)象不存在元素,可以使用isempty()方法來(lái)判斷一個(gè)字符串是否為空。
也可以使用isEmpty()方法來(lái)判斷Java集合元素否為空。
例如:
String str = "";
if (str.isEmpty()) {
System.out.println("This string is empty");
}上述代碼會(huì)輸出"This string is empty",因?yàn)樽兞縮tr是一個(gè)空字符串。
此外,還有一個(gè)常見(jiàn)的錯(cuò)誤就是認(rèn)為一個(gè)字符串包含空格或多個(gè)空格就是empty,這是不正確的。例如:
String str = " ";
if (str.isEmpty()) {
System.out.println("This string is empty");
}上述代碼不會(huì)輸出任何內(nèi)容,因?yàn)樽兞縮tr并不是一個(gè)空字符串,而是包含兩個(gè)空格的字符串。
null
null表示一個(gè)對(duì)象不存在。如果一個(gè)引用變量沒(méi)有被初始化或被顯式賦值為null,那么這個(gè)變量的值就是null。例如:
String str = null;
if (str == null) {
System.out.println("This string is null");
}上述代碼會(huì)輸出"This string is null",因?yàn)樽兞縮tr的值為null。
需要注意的是,對(duì)于基本數(shù)據(jù)類(lèi)型(如int、double等),它們不能被賦值為null。如果試圖將一個(gè)基本數(shù)據(jù)類(lèi)型賦值為null,會(huì)出現(xiàn)編譯錯(cuò)誤。
blank
blank是指一個(gè)字符串長(zhǎng)度大于0但是只包含空格(包括制表符和換行符)的情況。Java中可以使用isblank()方法來(lái)判斷一個(gè)字符串是否為blank。例如:
String str = " ";
if (str.isBlank()) {
System.out.println("This string is blank");
}上述代碼會(huì)輸出"This string is blank",因?yàn)樽兞縮tr包含兩個(gè)空格,并且這是這個(gè)字符串唯一的內(nèi)容。
需要注意的是,在Java 11之前是沒(méi)有isblank()方法的。如果你正在使用早期版本的Java,應(yīng)該使用trim()方法來(lái)去掉字符串兩端的空格,并檢查結(jié)果是否為空。例如:
String str = " ";
if (str.trim().isEmpty()) {
System.out.println("This string is blank");
}上述代碼也會(huì)輸出"This string is blank",因?yàn)樽兞縮tr經(jīng)過(guò)trim()方法處理后變成了一個(gè)空字符串。
總結(jié)一下
empty、null和blank三個(gè)概念有著明顯的區(qū)別:
- empty表示一個(gè)字符串長(zhǎng)度為0,Java集合不存在元素。
- null表示一個(gè)對(duì)象不存在;
- blank表示一個(gè)字符串長(zhǎng)度大于0但是只包含空格。
為了更好地理解這些概念和區(qū)別,以下是一些示例代碼。
public class StringExample {
public static void main(String[] args) {
String emptyStr = "";
String nullStr = null;
String blankStr = " ";
// 判斷empty字符串
if (emptyStr.isEmpty()) {
System.out.println("This string is empty");
}
// 判斷null字符串
if (nullStr == null) {
System.out.println("This string is null");
}
// 判斷blank字符串
if (blankStr.isBlank()) {
System.out.println("This string is blank");
}
}
}上述代碼會(huì)輸出"This string is empty"和"This string is blank",因?yàn)樽兞縠mptyStr是一個(gè)空字符串,變量blankStr包含兩個(gè)空格。
Java集合如何判空
Java List判空
isEmpty() 方法是一個(gè)通用的方法,可以用于所有實(shí)現(xiàn)了 java.util.Collection 接口的類(lèi)(如 List、Set 等等)。如果集合中沒(méi)有任何元素,則返回 true;否則返回 false。
List<String> list = new ArrayList<>();
System.out.println(list.isEmpty()); // 輸出 true
list.add("apple");
System.out.println(list.isEmpty()); // 輸出 false以上代碼創(chuàng)建了一個(gè)空的 ArrayList,并使用 isEmpty() 方法檢查它是否為空。然后在列表中添加了一個(gè)元素,再次使用 isEmpty() 方法進(jìn)行檢查。第一次輸出為 true,因?yàn)榱斜碇袥](méi)有元素;第二次輸出為 false,因?yàn)榱斜碇杏幸粋€(gè)元素。
Java Map判空
Map可以通過(guò)以下幾種方式來(lái)判斷是否為空:
1. 使用 isEmpty() 方法:Map 提供了一個(gè) isEmpty() 方法,如果 Map 中沒(méi)有任何映射關(guān)系,則返回 true。
Map<String, String> map = new HashMap<>();
System.out.println(map.isEmpty()); // 輸出 true
map.put("key", "value");
System.out.println(map.isEmpty()); // 輸出 false2. 判斷 Map 的大?。菏褂?size() 方法獲取 Map 中鍵值對(duì)的數(shù)量,如果為 0,則說(shuō)明 Map 為空。
Map<String, String> map = new HashMap<>();
System.out.println(map.size() == 0); // 輸出 true
map.put("key", "value");
System.out.println(map.size() == 0); // 輸出 false3. 判斷 Map 中的鍵集合是否為空:使用 keySet() 方法獲取 Map 中所有鍵的集合,然后判斷集合是否為空。
Map<String, String> map = new HashMap<>();
System.out.println(map.keySet().isEmpty()); // 輸出 true
map.put("key", "value");
System.out.println(map.keySet().isEmpty()); // 輸出 false需要注意的是,以上三種方法都可以判斷 Map 是否為空,但建議根據(jù)實(shí)際情況選擇最適合的方法。如果只需要知道 Map 是否為空,直接使用 isEmpty() 方法;如果需要執(zhí)行其他操作(如遍歷、刪除等),則可能需要獲取 Map 的大小或鍵集合。
到此這篇關(guān)于Java empty、null、blank的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)Java empty null blank內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringCloud Eureka服務(wù)發(fā)現(xiàn)實(shí)現(xiàn)過(guò)程
這篇文章主要介紹了SpringCloud Eureka服務(wù)發(fā)現(xiàn)實(shí)現(xiàn)過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
Spring中的ContextLoaderListener詳細(xì)解析
這篇文章主要介紹了Spring中的ContextLoaderListener詳細(xì)解析,在web容器即Tomact容器啟動(dòng)web應(yīng)用即servlet應(yīng)用時(shí),會(huì)觸發(fā)ServletContextEvent時(shí)間,這個(gè)事件會(huì)被ServletContextListener監(jiān)聽(tīng),需要的朋友可以參考下2023-12-12
SpringBoot項(xiàng)目實(shí)現(xiàn)jar包方式打包部署
SpringBoot默認(rèn)的打包方式就是jar包,本文就來(lái)介紹一下SpringBoot項(xiàng)目實(shí)現(xiàn)jar包方式打包部署,具有一定的參考價(jià)值,感興趣的可以了解一下2024-08-08
Java實(shí)現(xiàn)XML與JSON的互相轉(zhuǎn)換詳解
這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)XML與JSON的互相轉(zhuǎn)換,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-03-03
java簡(jiǎn)單解析xls文件的方法示例【讀取和寫(xiě)入】
這篇文章主要介紹了java簡(jiǎn)單解析xls文件的方法,結(jié)合實(shí)例形式分析了java針對(duì)xls文件的讀取和寫(xiě)入相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2017-06-06
jvm之java類(lèi)加載機(jī)制和類(lèi)加載器(ClassLoader)的用法
這篇文章主要介紹了jvm之java類(lèi)加載機(jī)制和類(lèi)加載器(ClassLoader)的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
springboot基于keytool實(shí)現(xiàn)https的雙向認(rèn)證示例教程
這篇文章主要介紹了springboot基于keytool實(shí)現(xiàn)https的雙向認(rèn)證,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06

