class Dog{
int height;
int weight;
String name;
}
public class DogTest {
public static void main(String[] args) {
Dog one = new Dog();
one.height=4;
one.name="fudo";
one.weight =2;
Dog two = new Dog();
two.height=4;
two.name="fudo";
two.weight =2;
if (one.equals(two)){
System.out.println("True");
}
else{
System.out.println("False");
}
}
}
「False」と表示されるのはなぜですか? 「すべてのオブジェクトが同じ値であっても同じオブジェクトではない」というJavaのデフォルトの場合、これらの2つのオブジェクトが実際に等しいJavaをどのように「説得する」ことができますか?たとえ2匹の犬が同じ名前、身長、体重を持っていても、1人はダルマティナーともう1匹はピットブルで、同じ人種であっても、いつも互いに違うことがあります。なぜこの.equals()コード例が "false"を返すのですか?
PS:if(one == two){}は、両方がヒープ上の同じオブジェクトを参照しているかどうかを比較していますが、同じ順序で同じ文字がある場合はstringのequalsと比較します。
あなたがオーバーライドしないとうまくいかないと、私はうまくいかないでしょう... –
@Haraldそれは同じではありません。それはなぜいくつかの文字列 '=='が機能し、他の文字列は機能しない理由です。 – corsiKa