一、字串判空
字串為null 或' '時返回true。
1.1 常用方法
-
str == null || str.length() < 1 String提供的
-
str == null || str.isEmpty() String提供的
-
StringUtils.isEmpty(str) StringUtils提供的(✅推薦)
1.2 isEmpty
String 和 StringUtils都提供了isEmpty方法,但是
- String提供的isEmpty:當物件為null時,會報空指標異常的錯誤
- StringUtils提供的isEmpty(✅推薦):null、空字串""是都返回true,即先判斷==null,再判斷是否為空,不會發生空指標異常錯誤 (StringUtils是由jdk提供的,相當於增強工具包)
// String public boolean isEmpty() { return value.length == 0; } // StringUtils(以org.apache.commons.lang為例) public static boolean isEmpty(String str) { return str == null || str.length() == 0; }
1.3 isBlank
isBlank 是在 isEmpty 的基礎上增加了是否為whiteSpace(空白字元:空格、製表符、tab )的判斷。
public static boolean isBlank(String str) { int strLen; if (str == null || (strLen = str.length()) == 0) { return true; } for (int i = 0; i < strLen; i++) { if ((Character.isWhitespace(str.charAt(i)) == false)) { return false; } } return true; }
舉例說明isBlank和isEmpty的區別
StringUtils.isEmpty("yyy") = false StringUtils.isEmpty("") = true StringUtils.isEmpty(" ") = false StringUtils.isBlank("yyy") = false StringUtils.isBlank("") = true StringUtils.isBlank(" ") = true
二、字串判等
- 使用String包, str1.equals(str2):本方法需要注意str1非null,否則NPE
- 使用Objects.equals(str1, str2) ✅推薦
說明:
1、== 比較的記憶體地址。 字串是物件型別,所以不能用簡單的“==”判斷
2、equals()比較的是物件的內容(區分字母的大小寫格式)是否相等