equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等,区分大小写。- s1 = new String("heima"); //创建字符串对象
- s1.equals("heima"); //返回true
复制代码 hashCode是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值
哈希码并不是完全唯一的,它是一种算法,让同一个类的对象按照自己不同的特征尽量的有不同的哈希码,但不表示不同的对象哈希码完全不同。也有相同的情况,看程序员如何写哈希码的算法。
1:Object类的hashCode.返回对象的内存地址经过处理后的结构,由于每个对象的内存地址都不一样,所以哈希码也不一样。
2:String类的hashCode.根据String类包含的字符串的内容,根据一种特殊算法返回哈希码,只要字符串内容相同,返回的哈希码也相同。
3:Integer类,返回的哈希码就是Integer对象里所包含的那个整数的数值,例如Integer i1=new Integer(100),i1.hashCode的值就是100 。由此可见,两个一样大小的Integer对象,返回的哈希码也一样。
如果,我们重写了equals方法,某些时候,“两个对象值相同(x.equals(y) == true),但却可有不同的hash code”是成立的。 |