为什么要重写hashcode,equals.
所有对象都是 object 子类,obejct的 equals方法和 hashCode方法
public native int hashCode();
。。。。
public boolean equals(Object obj) {
return (this == obj);
}
那 == 是什么呢?
是JAVA内存中存放的地址。
只有基本数据类型,比较的是 值
private static void s() {
//存在堆中
String s = new String("1");
//查询常量池,或者是堆里面,有没有,有就返回堆的引用
s.intern();
String s2 = "1";
System.out.println(s == s2);
String s3 = new String("1")+new String("1");
s3.intern();
String s4 = "11";
System.out.println(s3 == s4);
}
JDK8 的 字符串常量池,是在堆中,可以理解是独立的堆内存