檢查 StringBuilder 是否為 Null 或空
1. 概述
StringBuilder允許我們有效率、方便地建構String值。在Java中使用StringBuilder時,有時我們需要驗證它是否為null或空。
在本快速教程中,我們將探討如何有效地執行這些檢查。
2.問題介紹
在我們實作檢查StringBuilder是否為null或空白之前,讓我們快速回顧一下StringBuilder是什麼。在 Java 中, StringBuilder是一個可變的字元序列,它允許我們在不建立新實例的情況下修改String值,從而在執行頻繁的字串操作時提高記憶體效率。
簡單來說,我們可以透過邏輯OR運算子( || )連接null檢查和空檢查來解決問題:
is-null-check || is-empty-check
首先,讓我們準備一些StringBuilder物件作為我們的輸入:
static final StringBuilder SB_NULL = null;
static final StringBuilder SB_EMPTY = new StringBuilder();
static final StringBuilder SB_EMPTY_STR = new StringBuilder("");
static final StringBuilder SB_BLANK_STR = new StringBuilder(" ");
static final StringBuilder SB_WITH_TEXT = new StringBuilder("I am a magic string");
正如我們所看到的,我們嘗試讓輸入範例涵蓋不同的情況,例如由預設建構子實例化的StringBuilder實例、空String 、空白String等等。
在本教程中,我們將利用單元測試斷言來驗證每種方法是否產生預期結果。
接下來我們先來看看null檢查部分。
3. 實施null檢查
檢查StringBuilder是否為null對我們來說不是一個挑戰。在 Java 中,我們可以null **theObject == null** null 來驗證任何物件是否為 null :
static boolean isNull(StringBuilder sb) {
return sb == null;
}
接下來,讓我們使用準備好的輸入快速測試該方法:
assertTrue(isNull(SB_NULL));
assertFalse(isNull(SB_EMPTY));
assertFalse(isNull(SB_EMPTY_STR));
assertFalse(isNull(SB_BLANK_STR));
assertFalse(isNull(SB_WITH_TEXT));
如測試所示,該方法產生了預期的結果:它僅對輸入SB_NULL ( null引用)傳回true 。
接下來,我們結合sb == null和空檢查部分來解決問題。
4. 結合「 sb == null 」和空檢查
驗證StringBuild是否為null是一項簡單的任務。但是,有多種方法可以檢查StringBuilder是否為空。接下來,讓我們仔細看看它們。
4.1.將StringBuilder轉換為String
正如我們所提到的, StringBuilder維護一個字元序列。 StringBuilder.toString()方法可以將字元序列轉換為**String.**然後,我們可以簡單地檢查轉換後的String是否為空:
static boolean isNullOrEmptyByStrEmpty(StringBuilder sb) {
return sb == null || sb.toString().isEmpty();
}
在本例中,我們使用String.isEmpty()來檢查轉換後的String是否為空。讓我們將輸入傳遞給該方法,看看它是否可以傳回預期的結果:
assertTrue(isNullOrEmptyByStrEmpty(SB_NULL));
assertTrue(isNullOrEmptyByStrEmpty(SB_EMPTY));
assertTrue(isNullOrEmptyByStrEmpty(SB_EMPTY_STR));
assertFalse(isNullOrEmptyByStrEmpty(SB_BLANK_STR));
assertFalse(isNullOrEmptyByStrEmpty(SB_WITH_TEXT));
如測試所示,該方法對於null和空StringBuilder物件傳回true 。由於從SB_BLANK_STR轉換而來的空白String具有正長度,因此它不為空。
4.2.使用StringBuilder.length()方法
StringBuilder類別實作CharSequence介面。因此,它實作了length()方法來報告字元序列的長度。因此,我們也可以透過檢查 StringBuilder 的length()是否回傳 0 來判斷StringBuilder是否為空:
static boolean isNullOrEmptyByLength(StringBuilder sb) {
return sb == null || sb.length() == 0;
}
接下來,讓我們使用我們的輸入檢查此方法:
assertTrue(isNullOrEmptyByLength(SB_NULL));
assertTrue(isNullOrEmptyByLength(SB_EMPTY));
assertTrue(isNullOrEmptyByLength(SB_EMPTY_STR));
assertFalse(isNullOrEmptyByLength(SB_BLANK_STR));
assertFalse(isNullOrEmptyByLength(SB_WITH_TEXT));
測試表明我們的方法符合預期。
4.3.使用StringBuilder.isEmpty()方法
我們了解到length()方法是在CharSequence介面中定義的。此外, CharSequence提供了另一個方便的方法isEmpty() ,它提供了一種簡潔的方法來透過執行length() == 0檢查來檢查CharSequence物件是否為空:
default boolean isEmpty() {
return this.length() == 0;
}
StringBuilder是CharSequence.因此, isEmpty()在StringBuilder中也可用。接下來,我們建立一個方法來利用StringBuilder.isEmpty()來驗證StringBuilder是否為空:
static boolean isNullOrEmpty(StringBuilder sb) {
return sb == null || sb.isEmpty();
}
最後,讓我們用我們的輸入來測試它:
assertTrue(isNullOrEmpty(SB_NULL));
assertTrue(isNullOrEmpty(SB_EMPTY));
assertTrue(isNullOrEmpty(SB_EMPTY_STR));
assertFalse(isNullOrEmpty(SB_BLANK_STR));
assertFalse(isNullOrEmpty(SB_WITH_TEXT));
正如測試所示,該方法產生了正確的結果。
4. 結論
在本文中,我們探索了檢查 Java 中StringBuilder是否為null或空的不同方法。執行這些檢查可以防止我們的程式碼在使用StringBuilder物件時陷入NullPointerException陷阱或意外地處理空輸入。
與往常一樣,範例的完整原始程式碼可在 GitHub 上取得。