Object类中,hashCode的值是对象所在的内存地址,equals比较依据的也是内存地址,此时== equals hashCode三者的结果是一致的。但是,String重写了hashCode和equals方法,其结果不再和==保持一致。对于String s="abc"; s指向的是常量池中的对象"abc",而String s1=new String("abc");指向的是堆内存中的一个字符串对象"abc",==比较,二者不相等。而String类的hashCode和equals比较的是字符串是否包含相同的字符序列,因此二者有相同的hashCode,且equals比较为真 |