前言:Java 对象如果要比较是否相等,则需要重写 equals 方法,同时重写 hashCode 方法,而且 hashCode 方法里面使用质数 31。接下来看看各种为什么。 一、需求: 对比两个对象是否相等。对于下面的 User 对象,只需姓名和年龄相等则认为是同一个对象。 二、解决方案: 需要
@Overridepublicbooleanequals(Object obj) {if(this==obj){returntrue;//地址相等}if(obj ==null){returnfalse;//非空性:对于任意非空引用x,x.equals(null)应该返回false。}if(objinstanceofUser){ User other=(User) obj;//需要比较的字段相等,则这两个对象相等if(equalsStr(this.name, other.name)&& ...
1publicclassTestAddress {23publicstaticvoidmain(String[] args) {4Address address1 =newAddress("广东","广州");5Address address2 =newAddress("广东", "广州");67System.out.println(address1 == address2);//false8System.out.println(address1.equals(address2));//false9System.out.println(address1...
*一、当没有重写hashCode()方法的时候, * System.out.println(c);//获取的是hash值 collection_.set_.C@1b6d3586 * System.out.println(System.identityHashCode(c));//获取的是内存地址460141958* System.out.println(d);//获取的是hash值 collection_.set_.C@4554617c * System.out.println(System.ide...