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年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。