JAvaの==番号とequalsの違い

1132 ワード

==号とequalsという多くの人がこの場所でぼんやりしていたと信じていますが、両者の違いが分かりません.次に、両者の使い方についてお話しします.の
  • "="javaで表される2つのオブジェクトのメモリ内の保存アドレスを比較すると、2つのオブジェクトの参照アドレスが同じかどうかしか判断できないため、"=="はアプリケーションの範囲が小さい.
  • equalsは、スーパークラスObjectで定義されているため、すべてのクラスが持つメソッドですが、このメソッドをObjectに書くか、借りた==で比較します.
    public boolean equals(Object obj){
        return (this == obj);
    }
    
  • 以上から,サブクラスでequalsメソッドを書き換えない場合,このときのequalsと==は異なり,比較はオブジェクトのメモリアドレスである.
    3.equalsの書き換え
    
    
        public boooean equals(Object obj){ 
    
            if(obj==null){
    
                return false;  
             }
    
            if(!(obj instanceof User)){//  User 
    
             return false;  
            }
            User u=(User)obj;  
            if(!(this.getName().equals(u.getName()))){//  User     name
    
                return false;
             } 
    
        return true;
        }  
    

    上記のコードから、書き換えたequalsは、スーパークラスObjectのequalsメソッドを上書きし、2つのオブジェクトの内容を比較して両者が等しいか否かを判断することを実現する.このとき,Userの2つのオブジェクトをequalsで比較すると,nameが同じであればtrueが返される.また、Javaがすでに存在するクラス(Stringなど)をよく使用しています.equalsメソッドを書き換える必要はありません.これらのクラスは書き換えられているので、直接使用してコンテンツを比較することができます.最後に、あなたのサポートは私の成功の扉への原動力です.訪問を歓迎します.