Help us understand the problem. What is going on with this article?

JAVA equals()メソッド メモ

More than 5 years have passed since last update.

■Main23.java

Hero2 h7 = new Hero2();
        h7.setName("あむ");
        h7.setHp(70);
        Hero2 h8 = new Hero2();
        h8.setName("あむ");
        h8.setHp(70);
        if (h7.equals(h8) == true) {
            System.out.println("同じ内容です");

        } else {
            System.out.println("違う内容です");
        }

        if (h1.equals(h2) == true) {
            System.out.println("同じ内容です");

        } else {
            System.out.println("違う内容です");
        }

■実行結果
Hero2のコンストラクタが動作
Hero2のコンストラクタが動作
あむ
Hero2のコンストラクタが動作
Hero2のコンストラクタが動作
あむ
違う内容です
違う内容です

_________________________________________________________
そのクラスのインスタンスについて、「何を持って、意味的に同じと見なすか」をequals()メソッドのオーバーライドという形で指定しなければなりません。
■Hero2.javaに
equals()メソッドのオーバーライドをした

public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o instanceof Hero2) {
            Hero2 h7 = (Hero2) o;
            if (this.name.equals(h7.name)) {
                return true;
            }
        }
        return false;
    }

■Main23.javaをコンパイルした実行結果
Hero2のコンストラクタが動作
Hero2のコンストラクタが動作
あむ
Hero2のコンストラクタが動作
Hero2のコンストラクタが動作
あむ
同じ内容です
違う内容です

icelandnono
24歳です 職場は渋谷です 渋谷興味ない。。 新橋とかで働きたい。。銀座がすき
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away