hashcode:返回对象的hash码值
这是object中默认的实现这个hashcode的方法。native是交由本地系统。
代码如下
package java01;
//这个 extends就是不写的话,类也是默认的继承的
class A extends Object {
private int age;
// 在子类中覆盖掉这个equals的方法、
public boolean equals(Object obj) {
// 强转类型.为A
A a = (A) obj;
return this.age == a.age;
}
// 覆盖hashcode方法
public int hashCode() {
return age;
}
A(int age) {
this.age = age;
}
}
class ObjectDemo {
public static void main(String[] args) {
A f1 = new A(12);
A f2 = new A(13);
A f4 = new A(12);
A f3 = f1; // 把 f1的地址 赋给f3,地址相同的。
// 如下语句的结果为false,因为equals的是比较地址的。f1和f2的地址不同。
// System.out.println(f1.equals(f2));
// 如下结果为true。地址相同 的。
// System.out.println(f1.equals(f3));
// 返回boolean类型。
// 覆盖后比较
// System.out.println(f1.equals(f4));
// hashcode覆盖前
System.out.println(f1);// java01.A@15db9742
System.out.println(f1.hashCode());// 366712642
System.out.println(Integer.toHexString(f1.hashCode()));// 15db9742
// hashcode覆盖后
System.out.println(f1);// java01.A@c
System.out.println(f1.hashCode());// 12
System.out.println(Integer.toHexString(f1.hashCode()));// c
}
}