equals方法和==的区别--用实例简单说明
生活随笔
收集整理的這篇文章主要介紹了
equals方法和==的区别--用实例简单说明
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先我們創建一個類
public class People {private String name;private String address;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public People() {super();}public People(String name, String address) {super();this.name = name;this.address = address;}@Overridepublic String toString() {return "People [name=" + name + ", address=" + address + "]";} }該類沒有重寫hashcode和equals方法
下面我們進行比較
public static void main(String[] args) {People p1 = new People("a", "A");People p2 = new People("a", "A");People p3 = new People("b", "B");System.err.println(p1);System.err.println(p2);System.err.println(p3);System.err.println(p1.equals(p2));System.err.println(p1 == p2);System.err.println(p1.equals(p3));System.err.println(p1 == p3);}結果為:
說明如果沒有重寫equals()方法,則equals和==比較的都是地址。每生成一個對象,虛擬機都會重新生成一個地址,因此比較結果都為false
我們加上hashcode和equals方法
public class People {private String name;private String address;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public People() {super();}public People(String name, String address) {super();this.name = name;this.address = address;}@Overridepublic String toString() {return "People [name=" + name + ", address=" + address + "]";}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((address == null) ? 0 : address.hashCode());result = prime * result + ((name == null) ? 0 : name.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;People other = (People) obj;if (address == null) {if (other.address != null)return false;} else if (!address.equals(other.address))return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;return true;}}再次運行實例,結果為:
說明如果重寫equals()方法,則==比較的是地址,equals比較的是對象中的內容
轉載于:https://www.cnblogs.com/java-spring/p/10435139.html
總結
以上是生活随笔為你收集整理的equals方法和==的区别--用实例简单说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 秋季学校总结
- 下一篇: springboot配置cxf