「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

JavaのStringクラスには、文字列が空であるかどうかを確認するためのメソッドとしてisEmpty()isBlank()があります。これらは似ていますが、確認する「空」の定義に重要な違いがあります。


String.isEmpty() の特徴 (Java 6以降)

  • 定義: 文字列の長さがゼロであるかどうかをチェックします。

  • 戻り値: 文字列に文字が一つも含まれていない場合に true を返します。

  • 挙動: 空白文字(スペース、タブ、改行など)が含まれている場合、その文字列の長さはゼロではないため false を返します。

  • 使用例: 絶対に文字を含まない空文字列 ("") のみを検出したい場合に利用します。

文字列 (str)長さ (str.length())str.isEmpty() の結果
"" (空文字列)0true
" " (スペース1つ)1false
" \t " (空白文字のみ)4false
"Hello"5false

String.isBlank() の特徴 (Java 11以降)

  • 定義: 文字列が空である、または空白文字のみで構成されているかどうかをチェックします。

  • 戻り値: 文字列に文字が一つも含まれていない、または含まれている文字がすべて空白文字(スペース、タブ、改行コードなど)である場合に true を返します。

  • 挙動: isEmpty()よりも広範な「実質的に内容がない」状態を検出します。内部的には、文字列内に空白文字ではない文字が一つでも存在するかをチェックしています。

  • 使用例: ユーザーからの入力チェックなどで、「何も入力されていない」状態や「スペースしか入力されていない」状態(ブランク)をまとめて検出したい場合に利用します。

文字列 (str)str.isEmpty() の結果str.isBlank() の結果
"" (空文字列)truetrue
" " (スペース1つ)falsetrue
" \t " (空白文字のみ)falsetrue
"Hello"falsefalse

💡 違いのまとめと使い分け

項目isEmpty()isBlank()
Java導入バージョンJava 6Java 11
チェック内容長さがゼロか (str.length() == 0)長さがゼロか、または空白文字のみか
空白文字の扱い空白文字があれば false空白文字のみなら true
適用ケース厳密に空文字列 ("") のみを判定したい場合実質的な内容がない(空またはブランク)かを判定したい場合
Java 8以前の代替手段なしstr.trim().isEmpty() が同等の機能を提供

isBlank() は、それまでのJavaでstr.trim().isEmpty()のように、前後の空白を取り除いてから空文字かを判定していた処理を、より簡潔かつ効率的に置き換えるために導入されました。

したがって、文字列が実質的な情報を持っていないかを判定したい場合は isBlank() を使うのが最も適切です。

Ads by Google

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
0
あなたの考えが大好きです、コメントしてください。x