ホームページ Java &#&チュートリアル Javaの「==」と「equals()」の違いを詳しく解説

Javaの「==」と「equals()」の違いを詳しく解説

Feb 03, 2017 pm 01:33 PM

Javaの「==」とequals()の違い

関係演算子「==」について、「Javaプログラミング思考」では次のように説明されています。「関係演算子はブール結果を生成し、それらの間の関係を計算します。オペランドの値」。ここでのオペランドの「値」は注目に値します。 8 つの基本データ型 (boolean、byte、char、short、int、float、double、long) の場合、それらの変数には「値」が直接格納されます。したがって、「==」を使用して基本データ型の変数を比較する場合、実際の比較は変数に格納されている値です。たとえば:

public static void main(String[] args) {
    int a = 5, b = 5;
    System.out.println(a == b);
  }
ログイン後にコピー

もちろん、プログラムは true を出力します。しかし、次のコードはどうでしょうか?

public static void main(String[] args) {
    Integer c = new Integer(5), d = new Integer(5);
    System.out.println(c == d);
  }
ログイン後にコピー

プログラムを実行したところ、出力が false であることがわかりました。これは、Integer が Java の基本的なデータ型ではないためです。その変数 c および d は、Java ではオブジェクトを指す参照と呼ばれ、値「5」そのものではなく、メモリ内のオブジェクトのアドレスです。したがって、c と d は実際には、それぞれ値「5」を持つ 2 つの Integer オブジェクトのアドレスを格納します。これら 2 つのオブジェクトは同じメモリ空間になく、「==」比較の結果は当然 false になります。

それでは、equals()メソッドは何を比較するのでしょうか? equals() は、基本クラス Object で定義されたメソッドです。 Object クラスでは、equals() メソッドは次のように定義されます。

public boolean equals(Object obj) {
    return (this == obj);
  }
ログイン後にコピー

これは、「==」と同等です。実際、equals() メソッドの重要性は書き換えにあり、そうでない場合は、equals() の呼び出しは無意味です。たとえば、Object から継承された Integer クラスは、equals() メソッドをオーバーライドします。

public boolean equals(Object obj) {
    if (obj instanceof Integer) {
      return value == ((Integer)obj).intValue();
    }
    return false;
  }
ログイン後にコピー


このメソッドの意味は、値を比較することであり、同じ値を持つ 2 つの Integer オブジェクトに対して equals() を呼び出すと、次のようになります。比較:

public static void main(String[] args) {
    Integer c = new Integer(5), d = new Integer(5);
    System.out.println(c.equals(d));
  }
ログイン後にコピー


結果は true です。

読んでいただきありがとうございます、皆さんのお役に立てれば幸いです、このサイトをサポートしていただきありがとうございます!

Java の「==」と「equals()」の違いに関する詳細な記事については、PHP 中国語 Web サイトに注目してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)