デジタルトレンドナビ
システム開発

2024.03.11

Javaで文字列を比較する「equals」メソッド

Javaで文字列を比較する「equals」メソッド

Web開発において、文字列の比較は頻繁に行われます。例えば、ユーザーが入力したパスワードとデータベースに保存されたパスワードを比較したり、フォームに入力された氏名とデータベースの氏名を比較したりといった場面です。


Javaでは、文字列の比較に「==」演算子と「equals」メソッドという2つの方法があります。一見似ているように見えますが、それぞれ異なる動作をするため、使い分けることが重要です。


本記事は初心者でも迷わないよう、サンプルコードと共に、equalsメソッドの基礎から応用までを丁寧に解説します。

この記事でわかること

  • equalsメソッドとは
  • 「==」演算子と「equals」メソッドの違い
  • equalsメソッドを使ったサンプルコード

equalsメソッドとは?

equalsメソッドとは?

equalsメソッドは、2つのオブジェクトの内容が等しいかどうかを判断するために使用されます。Javaでは、オブジェクト指向プログラミングを採用しており、オブジェクトは状態と動作をカプセル化したデータ構造です。

equalsメソッドは、オブジェクトの状態を比較し、同じ状態であればtrue、そうでなければfalseを返します。

「==」演算子と「equals」メソッドの違い

「==」演算子と「equals」メソッドの違い

Javaには、equalsメソッドと同様に、オブジェクトの比較を行う==演算子が存在します。しかし、==演算子はオブジェクトの参照を比較するため、オブジェクトの内容が等しくても、参照が異なればfalseを返します。

一方、equalsメソッドはオブジェクトの内容を比較するため、参照が異なっていても、内容が等しければtrueを返します。

「==」演算子

  • 2つの変数が同じオブジェクトを参照しているかどうかを比較します。
  • 文字列の内容が同じであっても異なるオブジェクトであればfalseを返します。

「equals」メソッド

  • 2つの文字列の内容が同じかどうかを比較します。
  • 異なるオブジェクトであっても、文字列の内容が同じであればtrueを返します。

equalsメソッドの使い方

equalsメソッドの使い方

equalsメソッドは、以下の形式で呼び出すことができます。

Java
オブジェクト1.equals(オブジェクト2)

例えば、以下のコードでは、str1とstr2の内容が等しいかどうかを比較しています。

Java
String str1 = “Hello”;
String str2 = “Hello”;

if (str1.equals(str2)) {
System.out.println(“str1とstr2は同じ内容です”);
} else {
System.out.println(“str1とstr2は異なる内容です”);
}

このコードは、以下のように出力されます。

str1とstr2は同じ内容です

equalsメソッドの注意点

equalsメソッドを使用する際には、以下の点に注意する必要があります。

  • nullチェック

オブジェクトがnullかどうかを事前に確認する必要があります。nullオブジェクトに対してequalsメソッドを呼び出すと、NullPointerExceptionが発生します。

  • オーバーライド

標準ライブラリで提供されているequalsメソッドは、オブジェクトの内容を比較する基本的な実装を提供しています。しかし、必要に応じて、独自の比較ロジックを実装するためにequalsメソッドをオーバーライドすることができます。

  • equalsハッシュコード契約

equalsメソッドをオーバーライドした場合は、hashCodeメソッドもオーバーライドする必要があります。これは、オブジェクトの比較結果に基づいてハッシュコードを計算するためです。

まとめ

まとめ

equalsメソッドは、Javaにおけるオブジェクト比較の基本的な方法です。==演算子との違いを理解し、適切なタイミングでequalsメソッドを使用することで、効率的なコード開発が可能になります。

本記事で解説した内容を参考にequalsメソッドを使いこなせるよう、ぜひ練習してみてください。

投稿者

  • デジタルトレンドナビ編集部

    システム開発、Webサイト制作、ECサイトの構築・運用、デジタルトランスフォーメーション(DX)など、デジタルビジネスに関わる多岐の領域において、最新のトレンド情報や実践的なノウハウを発信してまいります。