相信在**==號和equals**這塊好多人曾在這個地方犯過糊塗,搞不清楚兩者的區別,下面我將談一談兩者的使用方法。。。java
<!-- 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方法,由於,這些類已經被重寫,能夠直接拿來使用來比較內容。
最後,您的支持是我通往成功之門的動力,歡迎來訪!內存