isEmpty() は「空かどうか」を判定する便利なメソッドで、String・Collection・Optional などで使えます。ただしnullに対して呼ぶと例外になる落とし穴があり、空白のみの文字列は「空」とみなされない点にも注意が必要です。この記事で正しい使い方を解説します。
この記事の結論:空判定は
str.isEmpty() / list.isEmpty() など。ただしnullに isEmpty() を呼ぶと NullPointerException になるので、str == null || str.isEmpty() のようにnull判定を先に。空白のみも弾くなら isBlank()(Java 11)です。文字列のisEmpty
String.isEmpty() は長さが0のときに true を返します。
String.isEmpty
System.out.println("".isEmpty()); // true(長さ0)
System.out.println("Hello".isEmpty()); // false
System.out.println(" ".isEmpty()); // false(空白は「空」ではない)
要注意:nullにisEmpty()は例外になる
isEmpty() はメソッドなので、対象が null だと呼び出した瞬間に NullPointerException になります。null判定を先に書きましょう。
null安全に空判定する
String str = getValue(); // null かもしれない
// NG: str が null だと例外
// if (str.isEmpty()) { ... }
// OK: null判定を先に(|| は短絡評価なので安全)
if (str == null || str.isEmpty()) {
System.out.println("未入力です");
}
|| は短絡評価なので、str == null が真ならその時点で確定し、右側の str.isEmpty() は評価されません。そのためnull判定を必ず左に書きます(逆だと例外になります)。null判定の詳細はnullを判定する方法を参照。空白のみも弾く:isBlank(Java 11)
isEmpty() は長さ0だけを「空」とみなすため、" "(スペースのみ)は false になります。スペースやタブだけの入力も「空」として弾きたいなら、Java 11以降の isBlank() を使います。
isEmpty と isBlank の違い
String s = " "; // 空白のみ System.out.println(s.isEmpty()); // false(長さは3) System.out.println(s.isBlank()); // true(空白のみ → 空とみなす, Java 11+)
フォームの未入力チェックなどでは、全角スペースだけの入力も弾ける
isBlank() が便利です。trim/strip と空判定の関係は空白のみの項目にtrimを適用したときの挙動も参考になります。コレクションのisEmpty
List・Set・Map などでも isEmpty() が使えます。要素が1つもなければ true です。size() == 0 より isEmpty() の方が意図が明確で読みやすくなります。
Collection.isEmpty
import java.util.*;
List<String> list = new ArrayList<>();
System.out.println(list.isEmpty()); // true
list.add("Element");
System.out.println(list.isEmpty()); // false
OptionalのisEmpty(Java 11)
Java 11から Optional.isEmpty() も使えます。値を含まないとき true です(逆は isPresent())。
Optional.isEmpty
import java.util.Optional; Optional<String> opt = Optional.empty(); System.out.println(opt.isEmpty()); // true System.out.println(opt.isPresent()); // false
よくある質問(FAQ)
QisEmpty()でNullPointerExceptionが出ます。
A対象が
null のまま isEmpty() を呼んだためです。str == null || str.isEmpty() のようにnull判定を先に書いてください。|| の短絡評価でnullなら右側は評価されず安全です。QisEmptyとisBlankの違いは?
A
isEmpty() は長さ0だけを空とみなします。isBlank()(Java 11+)は空白だけの文字列も空とみなします。スペースやタブのみの入力も弾きたいなら isBlank() を使ってください。Qsize() == 0 と isEmpty() はどちらが良いですか?
Aコレクションでは
isEmpty() が意図が明確で読みやすいため推奨です。一部の実装では isEmpty() の方が効率的な場合もあります。Q配列にisEmptyはありますか?
Aありません。配列は
arr.length == 0 で空判定します。isEmpty() は文字列・コレクション・Optionalなどのメソッドです。まとめ
JavaのisEmptyのポイントを整理します。
- 空判定は
str.isEmpty()/list.isEmpty()/opt.isEmpty() - nullに呼ぶと例外 →
str == null || str.isEmpty()でnull判定を先に - 空白のみも弾くなら
isBlank()(Java 11+) - コレクションは
size() == 0よりisEmpty()が読みやすい - 配列には isEmpty が無い →
length == 0
関連として、nullを判定する方法・空白のみの項目にtrimを適用したときの挙動・リストの項目が空でないか確認して使う方法もあわせて読むと、Javaの空・null判定に強くなれます。

