JavaのisEmpty()とisBlank()の違いを丁寧に解説!〜初心者がつまずかないために〜
こんにちは。ゆうせいです。
今回はJavaで文字列を扱うときに非常によく使う2つのメソッド、isEmpty()とisBlank()の違いについて解説していきます。
どちらも「空っぽかどうか」をチェックするものですが、
実は判定の中身がけっこう違うんです。
「何が違うの?」「どう使い分ければいいの?」という疑問に、わかりやすくお答えします!
結論をざっくり先に!
| メソッド | 空文字 ("") を空と判定? | 空白文字(例: " ")も空と判定? | 対応バージョン |
|---|---|---|---|
isEmpty() | 〇(true) | ✕(false) | Java 6以降 |
isBlank() | 〇(true) | 〇(true) | Java 11以降 |
つまり、
isEmpty()は「文字が1文字も入っていないとき」にだけtrueを返すisBlank()は「空文字や空白だけの文字列でもtrueを返す」
まずは isEmpty() の動きを確認!
概要:
boolean isEmpty = str.isEmpty();
このメソッドは、文字列の長さが0かどうかを判定します。つまり "".length() == 0 なら true を返します。
判定例:
| 値 | isEmpty() の結果 |
|---|---|
"" | true |
" " | false |
"abc" | false |
null | 例外(NullPointerException) |
注意点:
文字列が null の場合はエラーになる ので、先に null チェックが必要です!
if (str != null && str.isEmpty()) {
// OK
}
つぎに isBlank() を見てみよう!
概要:
boolean isBlank = str.isBlank();
このメソッドは、空文字または空白だけの文字列かどうかを判定します。
空白には スペース、タブ、改行などのホワイトスペースも含まれます。
判定例:
| 値 | isBlank() の結果 |
|---|---|
"" | true |
" " | true |
"\t" | true |
"\n " | true |
"abc" | false |
null | 例外(NullPointerException) |
つまり、見た目には「何も書いてない」ように見える文字列も、isBlank() なら全部まとめて「空」と判定してくれます。
isEmpty()とisBlank()の違いを例で見てみよう!
実行コード:
public class BlankVsEmptyCheck {
public static void main(String[] args) {
String[] testStrings = { "", " ", "\t", "\n", "abc", null };
for (String str : testStrings) {
System.out.println("-----");
System.out.println("対象: " + str);
if (str != null) {
System.out.println("isEmpty(): " + str.isEmpty());
System.out.println("isBlank(): " + str.isBlank());
} else {
System.out.println("nullなのでチェック不可");
}
}
}
}
出力結果:
-----
対象:
isEmpty(): true
isBlank(): true
-----
対象:
isEmpty(): false
isBlank(): true
-----
対象:
isEmpty(): false
isBlank(): true
-----
対象:
isEmpty(): false
isBlank(): true
-----
対象: abc
isEmpty(): false
isBlank(): false
-----
対象: null
nullなのでチェック不可
どっちを使えばいいの?使い分けのポイント!
| 状況 | 使うべきメソッド |
|---|---|
| 文字列が完全に空(0文字)か調べたい | isEmpty() |
| 空白しか入っていない場合も「空」としたい | isBlank()(Java 11〜) |
| Java 11より前のバージョンを使っている | isEmpty() + 空白除去 |
Java 8以前で isBlank() と同じことをしたい場合:
str.trim().isEmpty()
trim() は文字列の前後の空白を除去するので、見た目に空っぽならtrueになります。
補足:どちらもnullには注意!
どちらのメソッドも、対象の文字列が null の場合は例外(NullPointerException)が発生します。
なので、安全なコードを書くにはこうしましょう:
if (str != null && str.isBlank()) {
// 空白または空文字のときの処理
}
まとめ
isEmpty()は 0文字かどうか を判定isBlank()は 空白文字だけの文字列も含めて 判定isBlank()は Java 11以降で使用可能nullに対しては どちらもエラーになる ため、事前チェックが必要
次の学習ステップ
この違いを押さえたら、次は次のような内容に進んでみましょう!
trim()やstrip()の違い(前後の空白除去に関するメソッド)StringUtils.isBlank()(Apache Commonsの便利メソッド)- null安全な文字列処理のベストプラクティス
- 正規表現を使った文字列検査
文字列操作の理解が深まると、データの前処理や入力チェックの精度がぐっと上がります!一歩ずつ身につけていきましょう!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。