成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

工作 3 年的同事不懂 isEmpty 和 isBlank 的區別,我真是醉了。。

開發 后端
說到這個事情,最近還有個工作 3 年的同事問我 isEmpty 和 isBlank 的區別,好吧,今天就展開講下。

 工具類亂象

最近在檢查代碼時,發現有的同事喜歡用 isEmpty,有的同事喜歡用 isBlank,而且大家用的還不是同一個工具包中的,甚至還有自己手寫 String 工具類的,天呀,我真是醉了……

你們公司是否也有這樣的情況呢?別說沒有,我真不信!

說到這個事情,最近還有個工作 3 年的同事問我 isEmpty 和 isBlank 的區別,好吧,今天就展開講下。

首先,這兩個方法用的都是工具類 StringUtils 里面的方法,都是用來判斷字符串是否為空的,而這個工具類到處都是,如下圖所示,棧長輸入 StringUtil,很多類似的工具類就蹦出來了:

??

像這樣類似的 String 工具類存在不同的包中,有 Netty, Apache commons-lang3, Spring 等等,這也是造成程序員不統一工具類的原因,雖然大部分框架都會自己集成,但用的最多的,方法最全的還要屬 Apache commons-lang3 工具包。

commons-lang3 是 Apache 下面的一個開源的通用  Java 工具包,除了常用的字符串工具類,還包含數字工具類、時間工具類、反射工具類、線程工具類,等等……

更多請參考《排名前 16 的 Java 工具類》這篇文章。

為什么推薦通用的 commons-lang3?

一方面,commons-lang3 是專業的工具包,功能非常齊全、強大。

另一方面,不一定所有的項目都會用到 Netty、Spring 等框架,它們都是框架集成的,只有一小部分功能,方法并不齊全,所以通用的 commons-lang3 工具包對系統遷移、或者對全公司不同系統之間的共用有幫助,避免差異化引起的系統潛在 bug。

isEmpty 和 isBlank 區別?

說了這么多,isEmpty 和 isBlank 到底有啥區別?

1)isEmpty

判斷字符串是否為空字符串,只要有一個任意字符(包括空白字符)就不為空。

來看 isEmpty 的方法源碼: 

public static boolean isEmpty(CharSequence cs) {
return cs == null || cs.length() == 0;
}

看見沒,這個方法只判斷了是為為 null 或者長度為 0。

意味著,如果用戶輸入 "    " 等空白字符,這個方法就不通過了,結果就是不為空了。

如驗證輸入以下內容:

輸入內容

是否為空

"    "

""

"Java技術棧"

2、isBlank

判斷字符串是否為空字符串,全部空白字符也為空。

來看 isBlank 的方法源碼: 

public static boolean isBlank(CharSequence cs) {
int strLen = length(cs);
if (strLen == 0) {
return true;
} else {
for(int i = 0; i < strLen; ++i) {
if (!Character.isWhitespace(cs.charAt(i))) {
return false;
}
}
return true;
}
}

看見沒,第 7 行,只要有一個字符不為空白字符就返回 false,也就是說,如果全部都為空白字符就返回 true,也就是全部空白字符也為空。

如驗證輸入以下內容:

輸入內容

是否為空

"    "

""

"Java技術棧"

這時候,如果用戶輸入 "    " 等空白字符,這個方法也返回空了,這也是大部分業務場景下我們期望出現的結果。

isEmpty 和 isBlank 怎么選?

很明顯,我們要判斷一個字符串為空,絕大部分情況下 "空白字符" 也要為空的,嚴謹來說肯定要用 isBlank,雖然 isEmpty 也可以,但如果在最前端的接口不被攔截掉,請求到了后端的服務、數據庫,就可能會造成壓力,甚至是系統異常,這是完全可以避免的。

但萬事也沒有絕對,如果你的程序可以接受任意字符,包括 "空白字符",那就要選擇 isEmpty,isBlank 會攔截所有空白字符,就達不到要求。

所以,這兩個工具方法你會用了嗎?

與之相對應的一般還有 isNotEmpty 和 isNotBlank,這都是對工具類的封裝。

好了,今天的分享就到這了。 


責任編輯:龐桂玉 來源: Java編程
相關推薦

2022-01-07 13:36:00

MySQL數據庫分頁

2022-09-01 13:25:54

isEmptyisBlank

2020-04-07 08:00:02

Redis緩存數據

2021-01-18 11:27:03

Istio架構云環境

2022-06-16 14:07:26

Java代碼代碼review

2019-09-16 09:46:05

程序員技術等級

2011-01-20 11:42:49

同事

2022-03-23 08:01:04

Python語言代碼

2019-03-25 08:30:20

騰訊互聯網

2021-06-02 08:17:05

門面模式設計

2020-10-14 10:29:58

人工智能

2021-06-02 08:09:09

StringUtils項目isEmpty

2019-02-25 08:05:34

架構 IT 技術系統

2021-12-03 11:57:27

代碼##語言

2020-04-24 09:14:21

術語網絡安全黑客

2011-05-07 14:15:39

工作站PC

2022-12-27 07:57:43

2021-07-01 12:10:31

性能優化React

2023-11-02 08:27:29

2014-01-06 11:21:55

科技行業微軟英特爾
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本粉嫩一区二区三区视频 | 日韩欧美二区 | 99精品一区二区三区 | 精品一区二区免费视频 | 国产成人精品一区二区 | 久久精品日产第一区二区三区 | 精国产品一区二区三区四季综 | 亚洲一区二区中文字幕 | 成人精品视频 | 日本亚洲精品成人欧美一区 | 国产成人精品一区二区三 | 91黄在线观看 | 久久久久久久久国产精品 | 米奇狠狠鲁 | 精品91久久| а天堂中文最新一区二区三区 | 久久国产精品久久 | 亚洲成人一区二区 | 国产精品久久久久久久久久免费看 | 国产精品视频一 | 久久国产精品一区二区三区 | jizz视频| 久久久高清 | 国产99精品 | 久久最新精品 | 精品亚洲一区二区 | 亚洲人a | 中文字幕影院 | 亚洲精品久久久久久一区二区 | 99re视频在线 | 国产日韩欧美一区 | 久久99精品国产麻豆婷婷 | 精品国产一区二区三区久久 | 99久热| 中文字幕亚洲欧美日韩在线不卡 | 成人在线观看免费 | 日日噜 | 伊人色综合久久久天天蜜桃 | 玖草资源 | 成人国产精品免费观看视频 | 日韩一二区 |