org.apache.commons.lang.StringUtils 类提供了 String 的常用操作,最为常用的判空有如下两种 isEmpty(String str) 和 isBlank(String str)。
分析
我们通过源码来分析区别:
1 public static boolean isEmpty(String str) { 2 return str == null || str.length() == 0; 3 } 4 5 public static boolean isNotEmpty(String str) { 6 return !isEmpty(str); 7 } 8 9 public static boolean isBlank(String str) { 10 int strLen; 11 if (str != null && (strLen = str.length()) != 0) { 12 for(int i = 0; i < strLen; ++i) { 13 if (!Character.isWhitespace(str.charAt(i))) { 14 return false; 15 } 16 } 17 18 return true; 19 } else { 20 return true; 21 } 22 } 23 24 public static boolean isNotBlank(String str) { 25 return !isBlank(str); 26 }<style></style>
可以看到:
- StringUtils.isEmpty(String str) 判断某字符串是否为空,为空的标准是 str==null 或 str.length()==0
- StringUtils.isBlank(String str) 判断某字符串是否为空或长度为 0 或由空白符 (whitespace) 构成
- StringUtils.isNotEmpty(String str) 等价于 !isEmpty(String str)
- StringUtils.isNotBlan(String str) 等价于 !isBlank(String str)
个人建议
我自己更喜欢使用 StringUtils.isBlank(String str) 来执行判空操作,因为判断的条件更多更具体,特别是进行参数校验时,推荐使用。