java Objects.equals の使い方|nullでも安全に文字列比較する方法【NullPointerException対策】

この記事は約3分で読めます。
記事内に広告が含まれています。

Javaで文字列を比較するとき、こんなエラーに遭遇したことはありませんか?

java.lang.NullPointerException

原因は、null の変数に対して equals を呼び出してしまうことです。

この記事では、

  • java Objects.equals の使い方
  • null 安全な文字列比較の方法
  • NullPointerException を防ぐ書き方

を初心者向けにわかりやすく解説します。


✅ 結論:null の可能性があるなら Objects.equals を使う

null の可能性がある場合は、

Objects.equals(a, b)

を使えば安全です。


java equals で null エラーが出る原因

次のコードを見てください。

String str = null;
System.out.println(str.equals("hello"));

str が null のため、
equals を呼び出すことができず

java.lang.NullPointerException

が発生します。

これは「何も入っていない箱」に命令しようとしている状態です。


java Objects.equals の使い方

import java.util.Objects;

String str = null;
System.out.println(Objects.equals(str, "hello"));

このコードはエラーになりません。

なぜ Objects.equals は安全なの?

Objects.equals は内部で次のような処理をしています。

  • 両方 null → true
  • どちらか null → false
  • 両方値あり → equals で比較

つまり、nullチェックを自動でしてくれる便利なメソッドです。


equals と Objects.equals の違い

比較方法null のとき安全性
a.equals(b)エラーになる可能性あり
“文字列”.equals(a)安全
Objects.equals(a, b)安全

java 文字列比較で Objects.equals を使うべき場面

  • DBから取得した値を比較するとき
  • フォーム入力値を比較するとき
  • 初期化されていない可能性がある変数

「nullかもしれない」と思ったら、
Objects.equals を使うと安心です。


よくある質問(FAQ)

Q1. 文字列比較は常に Objects.equals を使うべき?

null の可能性がないと分かっている場合は、通常の equals でも問題ありません。

ただし、安全性を重視するなら Objects.equals を使う方が安心です。

Q2. equalsIgnoreCase も null でエラーになる?

はい、null の変数に対して呼び出すと NullPointerException が発生します。

null の可能性がある場合は事前にチェックするか、設計を見直しましょう。


まとめ

  • 通常の equals は null だとエラーになる
  • java Objects.equals を使えば null 安全に比較できる
  • NullPointerException の多くは null チェック不足が原因

文字列比較でエラーが出たら、
まずは null を疑う → Objects.equals を検討する

この流れを覚えておきましょう。

コメント

タイトルとURLをコピーしました