關(guān)于StringUtils.isBlank()的使用及說(shuō)明
StringUtils.isBlank()的使用
在校驗(yàn)一個(gè)String類型的變量是否為空時(shí),可以使用StringUtils.isBlank方法,它可以校驗(yàn)三種情況:是否為null、是否為""、是否為空字符串(引號(hào)中間有空格)" "、制表符、換行符、換頁(yè)符和回車(chē)。
StringUtils.isBlank(str); 當(dāng)str不為空時(shí),返回值為false。
下面是該方法的源碼:
public static boolean isBlank(CharSequence cs) {
? ? ? ? int strLen;
? ? ? ? if (cs != null && (strLen = cs.length()) != 0) {
? ? ? ? ? ? for(int i = 0; i < strLen; ++i) {
? ? ? ? ? ? ? ? if (!Character.isWhitespace(cs.charAt(i))) {
? ? ? ? ? ? ? ? ? ? return false;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return true;
? ? ? ? } else {
? ? ? ? ? ? return true;
? ? ? ? }
? ? }在業(yè)務(wù)代碼中使用第三方j(luò)ar的工具類去判斷空,簡(jiǎn)化開(kāi)發(fā)且方便閱讀,類似的還有isEmpty()方法。
public static boolean isEmpty(CharSequence cs) {
? ? ? ? return cs == null || cs.length() == 0;
? ? }通過(guò)源碼可以看出:
1.isEmpty沒(méi)有忽略空格參數(shù),是以是否為空和是否存在未判斷依據(jù)。
2.isBlank進(jìn)行了為空(字符串為空格、制表符、tab的情況)的判斷。一般比較常用。
大家可以通過(guò)下面的例子進(jìn)行體會(huì):
StringUtils.isEmpty("yyy") = false
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ? ") = false
StringUtils.isBlank("yyy") = false
StringUtils.isBlank("") = true
StringUtils.isBlank(" ? ") = true常用的方法,但是時(shí)間久了會(huì)記憶模糊,特作出記錄,高手可以忽略。。。
StringUtils.isBlank和StringUtils.isEmpty的區(qū)別和使用
StringUtils.isBlank和StringUtils.isEmpty都是判斷空的方法。
依賴:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>isBlan()的使用
boolean b1 = StringUtils.isBlank(null);
boolean b2 = StringUtils.isBlank("");
boolean b3 = StringUtils.isBlank(" ");
boolean b4 = StringUtils.isBlank("\t");
boolean b5 = StringUtils.isBlank("\n");
boolean b6 = StringUtils.isBlank("test");
System.out.println("判斷null = "+ b1 + '\n' + "判斷\"\" = "+ b2 + '\n'
+ "判斷空格 = "+ b3 + '\n' + "判斷制表符 = "+ b4 + '\n' + "判斷換行符 = "+ b5
+ '\n' + "判斷字符串 = "+ b6);
isEmpty()的使用
boolean b1 = StringUtils.isEmpty(null);
boolean b2 = StringUtils.isEmpty("");
boolean b3 = StringUtils.isEmpty(" ");
boolean b4 = StringUtils.isEmpty("\t");
boolean b5 = StringUtils.isBlank("\n");
boolean b6 = StringUtils.isEmpty("test");
System.out.println("判斷null = "+ b1 + '\n' + "判斷\"\" = "+ b2 + '\n'
+ "判斷空格 = "+ b3 + '\n' + "判斷制表符 = "+ b4 + '\n' + "判斷換行符 = "+ b5
+ '\n' + "判斷字符串 = "+ b6);
根據(jù)上面結(jié)果的對(duì)比,isBlank()方法和isEmpty方法的區(qū)別:
isBlank()判斷制表符(\t)和空格時(shí),為true;isEmpty()判斷制表符(\t)和空格時(shí),為false;
兩個(gè)判斷null、""、以及換行符(\n或者\(yùn)r)時(shí)為true。
兩者的不同主要是因?yàn)椋?/p>
isBlank()源碼:

isBlank()判斷是否為null和length()為0,還判斷是否是空格、tab鍵、換行符。
isWhitespace() 方法用于判斷指定字符是否為空白字符,空白符包含:空格、tab 鍵、換行符
isEmpty()源碼

isEmpty()只判斷是否為null和長(zhǎng)度為0。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java基于雙向環(huán)形鏈表解決丟手帕問(wèn)題的方法示例
這篇文章主要介紹了java基于雙向環(huán)形鏈表解決丟手帕問(wèn)題的方法,簡(jiǎn)單描述了丟手帕問(wèn)題,并結(jié)合實(shí)例形式給出了Java基于雙向環(huán)形鏈表解決丟手帕問(wèn)題的步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-11-11
Mybatis的parameterType造成線程阻塞問(wèn)題分析
這篇文章主要詳細(xì)分析了Mybatis的parameterType造成線程阻塞問(wèn)題,文中有詳細(xì)的解決方法,及相關(guān)的代碼示例,具有一定的參考價(jià)值,感興趣的朋友可以借鑒閱讀2023-06-06
java實(shí)現(xiàn)讀取txt文件并以在每行以空格取數(shù)據(jù)
今天小編就為大家分享一篇java實(shí)現(xiàn)讀取txt文件并以在每行以空格取數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
淺談Java代碼的 微信長(zhǎng)鏈轉(zhuǎn)短鏈接口使用 post 請(qǐng)求封裝Json(實(shí)例)
下面小編就為大家?guī)?lái)一篇淺談Java代碼的 微信長(zhǎng)鏈轉(zhuǎn)短鏈接口使用 post 請(qǐng)求封裝Json(實(shí)例)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07
java中處理stream.filter()的實(shí)例代碼
stream()是Java 8中的一個(gè)函數(shù)式接口,用于處理數(shù)據(jù)流,它可以從一個(gè)數(shù)據(jù)源,如集合,數(shù)組等生成一個(gè)流,這篇文章主要給大家介紹了關(guān)于java中處理stream.filter()的相關(guān)資料,需要的朋友可以參考下2024-08-08
Java實(shí)現(xiàn)Map集合二級(jí)聯(lián)動(dòng)示例
Java實(shí)現(xiàn)Map集合二級(jí)聯(lián)動(dòng)示例,需要的朋友可以參考下2014-03-03
基于Java編寫(xiě)一個(gè)限流工具類RateLimiter
這篇文章主要為大家詳細(xì)介紹了如何基于Java編寫(xiě)一個(gè)限流工具類RateLimiter,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
解決SpringBoot自定義攔截器和跨域配置沖突的問(wèn)題
這篇文章主要介紹了解決SpringBoot自定義攔截器和跨域配置沖突的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
java.sql.Date和java.util.Date的區(qū)別詳解
Java中有兩個(gè)Date類,一個(gè)是java.util.Date通常情況下用它獲取當(dāng)前時(shí)間或構(gòu)造時(shí)間,另一個(gè)是java.sql.Date是針對(duì)SQL語(yǔ)句使用的,它只包含日期而沒(méi)有時(shí)間部分,這篇文章主要給大家介紹了關(guān)于java.sql.Date和java.util.Date區(qū)別的相關(guān)資料,需要的朋友可以參考下2023-03-03

