ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
基本の判定
String s = getValue();
// null または長さ 0
if (s == null || s.isEmpty()) { }
// null または空白だけ(Java 11 以降)
if (s == null || s.isBlank()) { }
// Java 10 以前
if (s == null || s.trim().isEmpty()) { }
// null チェックを先に書く(&& は短絡評価なので安全)
// if (s.isEmpty() || s == null) ← 逆にすると NullPointerException
|| は左が真なら右を評価しません。s == null を必ず先に書いてください。
isEmpty と isBlank の違い
| 値 | isEmpty() | isBlank() | trim().isEmpty() |
|---|---|---|---|
"" | true | true | true |
" "(半角空白) | false | true | true |
" "(全角空白) | false | true | false |
"\t\n" | false | true | true |
"abc" | false | false | false |
null | NullPointerException | ||
String zenkaku = " "; // 全角スペース
System.out.println(zenkaku.isEmpty()); // false
System.out.println(zenkaku.isBlank()); // true Unicode の空白を判定する
System.out.println(zenkaku.trim().isEmpty()); // false trim は U+0020 以下しか削らない
System.out.println(zenkaku.strip().isEmpty()); // true strip は Unicode 対応
日本語の入力フォームでは全角スペースが必ず混ざります。trim() ではなく isBlank() か strip() を使ってください。
null 安全に書く
String s = null;
// 落ちる
// if (s.equals("")) { }
// 定数を左に置く
if ("".equals(s)) { } // false(例外にならない)
// Objects を使う
if (Objects.equals(s, "")) { } // false
// 既定値を用意する
String value = Objects.requireNonNullElse(s, "");
String value2 = Objects.toString(s, ""); // null なら ""
String value3 = Objects.requireNonNullElseGet(s, () -> loadDefault());
// 必須の引数は早い段階で落とす
public void run(String name) {
Objects.requireNonNull(name, "name は必須です");
}
判定用のメソッドを 1 つ作る
public final class Strings {
private Strings() {}
/** null か空文字なら true */
public static boolean isEmpty(String s) {
return s == null || s.isEmpty();
}
/** null か空白だけなら true */
public static boolean isBlank(String s) {
return s == null || s.isBlank();
}
/** null なら空文字にする */
public static String nullToEmpty(String s) {
return s == null ? "" : s;
}
/** 空白だけなら null にする(DB に入れる前の正規化) */
public static String emptyToNull(String s) {
return isBlank(s) ? null : s.strip();
}
}
プロジェクト内に判定方法が 3 種類混在すると、境界の扱いがばらつきます。1 か所に集めて全員がそれを使うのが最も効果があります。
ライブラリを使う場合
// Apache Commons Lang3
StringUtils.isEmpty(s); // null または ""
StringUtils.isBlank(s); // null または空白だけ
StringUtils.isNotBlank(s);
StringUtils.defaultString(s); // null なら ""
StringUtils.defaultIfBlank(s, "既定値");
StringUtils.trimToEmpty(s); // null なら ""、それ以外は trim
// Spring
StringUtils.hasText(s); // null でも空でもない(= 中身がある)なら true
ObjectUtils.isEmpty(s);
// Google Guava
Strings.isNullOrEmpty(s);
Strings.nullToEmpty(s);
同じ名前で意味が違う点に注意してください。Spring の hasText() は「中身がある」なので、Commons の isBlank() の否定にあたります。import を取り違えると条件が反転します。
コレクションと Optional
List<String> list = getList();
if (list == null || list.isEmpty()) { }
// 空のリストを返せば null チェックが要らなくなる
public List<String> getList() {
return results != null ? results : List.of();
}
// 値がある / ない を型で表す
Optional<String> name = findName();
if (name.isPresent()) { }
name.ifPresent(System.out::println);
String v = name.orElse("名無し");
String v2 = name.filter(s -> !s.isBlank()).orElse("名無し");
// null を Optional にする
Optional.ofNullable(s).filter(x -> !x.isBlank()).ifPresent(this::save);
「値が無い」を null ではなく空コレクションや Optional で表すと、判定そのものが減ります。Optional はメソッドの戻り値に使うもので、フィールドや引数には使いません。
null と空文字を区別する場面
| 場面 | 意味の違い |
|---|---|
| フォームの入力 | null=項目が送られていない / ""=入力欄が空 |
| データベース | NULL=未設定 / ''=空という値。検索条件が変わる |
| JSON | null=明示的に null / キーが無い=未指定 |
| 設定ファイル | 未設定なら既定値、空文字なら「無効にする」など |
-- NULL は = で比較できない
SELECT * FROM users WHERE name = ''; -- 空文字の行だけ
SELECT * FROM users WHERE name IS NULL; -- NULL の行だけ
SELECT * FROM users WHERE COALESCE(name, '') = ''; -- 両方
DB に入れる前にどちらかへ寄せておくと、検索条件が単純になります。「未入力は NULL」「空文字は保存しない」のように決めてください。
関連
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?