java中的==號與equals區別

相信在**==號和equals**這塊好多人曾在這個地方犯過糊塗,搞不清楚兩者的區別,下面我將談一談兩者的使用方法。。。java

  1. 「==」在java中表示的比較兩個對象在內存中的保存地址,它只能判斷兩個對象的引用地址是否是同樣,因此「==」在應用中範圍很小。
  2. equals是全部類都具備的方法,由於超類Object中定義了此方法,可是,在Object中寫此方法是,仍是藉助的==來比較的。以下所示:

    <!-- lang: java -->this

    public boolean equals(Object obj){
        return (this == obj);
    }

從上面能夠看出,若是在子類中不重寫equals方法,那麼此時的equals和==無異,比較的都是對象的內存地址;code

3.equals的重寫
<!-- lang: java -->對象

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方法從而實現比較兩個對象內容來判斷兩者是否相等;此時若是用equals比較User的兩個對象是 兩者若name同樣則會返回true;
此外,咱們常用java已經存在的類時(好比String...),不須要再重寫equals方法,由於,這些類已經被重寫,能夠直接拿來使用來比較內容。
最後,您的支持是我通往成功之門的動力,歡迎來訪!內存

相關文章
相關標籤/搜索