判空我推薦用StringUtils.isBlank
點(diǎn)擊上方?Java旅途,選擇?設(shè)為星標(biāo)
優(yōu)質(zhì)文章,每日送達(dá)
在我們?nèi)粘i_發(fā)中,判空應(yīng)該是最常用的一個(gè)操作了。因此項(xiàng)目中總是少不了依賴commons-lang3包。這個(gè)包為我們提供了兩個(gè)判空的方法,分別是StringUtils.isEmpty(CharSequence cs)和StringUtils.isBlank(CharSequence cs)。我們分別來看看這兩個(gè)方法有什么區(qū)別。
一、StringUtils.isEmpty
isEmpty的源碼如下:
public?static?boolean?isEmpty(CharSequence?cs)?{
????return?cs?==?null?||?cs.length()?==?0;
}
這個(gè)方法判斷的是字符串是否為null或者其長度是否為零。
測試效果
public?class?BlankAndEmpty?{
????public?static?void?main(String[]?args)?{
????????
????????System.out.println(StringUtils.isEmpty(null));?//?true
????????System.out.println(StringUtils.isEmpty(""));?//true
????????System.out.println(StringUtils.isEmpty("?"));?//false
????????System.out.println(StringUtils.isEmpty("\t"));?//false
????????System.out.println(StringUtils.isEmpty("Java旅途"));?//false
????}
}
二、StringUtils.isBlank
isBlank的源碼如下:
public?static?boolean?isBlank(CharSequence?cs)?{
????int?strLen?=?length(cs);
????if?(strLen?==?0)?{
????????return?true;
????}?else?{
????????for(int?i?=?0;?i?????????????if?(!Character.isWhitespace(cs.charAt(i)))?{
????????????????return?false;
????????????}
????????}
????????return?true;
????}
}
length(cs)的方法如下
public?static?int?length(CharSequence?cs)?{
????return?cs?==?null???0?:?cs.length();
}
這個(gè)方法除了判斷字符串是否為null和長度是否為零,還判斷了是否為空格,如果是空格也返回true。
測試效果
public?class?BlankAndEmpty?{
????public?static?void?main(String[]?args)?{
????????System.out.println(StringUtils.isBlank(null));?//true
????????System.out.println(StringUtils.isBlank(""));?//true
????????System.out.println(StringUtils.isBlank("?"));?//true
????????System.out.println(StringUtils.isBlank("\t"));?//true
????????System.out.println(StringUtils.isBlank("Java旅途"));?//false
????}
}
三、總結(jié)
isEmpty:如果是null或者“”則返回true。 isBlank:如果是null或者“”或者空格或者制表符則返回true。isBlank判空更加準(zhǔn)確。
四、擴(kuò)展
在實(shí)際開發(fā)中,除了isBlank判空的幾種情況之外,其實(shí)“null”字符串我們也會(huì)當(dāng)作空字符串處理。
我們需要判斷幾個(gè)字段同時(shí)不能為空,如果還用isBlank就顯得有點(diǎn)累贅了。我們可以使用String的可變參數(shù)提供如下工具類。
public?class?StringTool?{
????public?static?boolean?isNullStr(String...?args)?{
????????boolean?falg?=?false;
????????for?(String?arg?:?args)?{
????????????if?(StringUtils.isBlank(arg)?||?arg.equals("null"))?{
????????????????falg?=?true;
????????????????return?falg;
????????????}
????????}
????????return?falg;
????}
}
這個(gè)工具類的優(yōu)點(diǎn)很明顯,一方面判斷了字符串“null”,另一方面對(duì)參數(shù)個(gè)數(shù)無限制,只要有一個(gè)參數(shù)是空則返回true。
—?【 THE END 】— 本公眾號(hào)全部博文已整理成一個(gè)目錄,請(qǐng)?jiān)诠娞?hào)里回復(fù)「m」獲??! 最近面試BAT,整理一份面試資料《Java面試BATJ通關(guān)手冊(cè)》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。
獲取方式:點(diǎn)“在看”,關(guān)注公眾號(hào)并回復(fù) PDF?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。
謝謝支持喲 (*^__^*)
