字串判空、判等

zhegeMaw發表於2024-08-09

一、字串判空

字串為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()比較的是物件的內容(區分字母的大小寫格式)是否相等

相關文章