javaObject类—hashCode方法
1 package face_object; 2 /* 3 * Object:所有类的根类。 4 * Object是不断抽取而来的,具备所有对象都具备的共性内容。 5 * 常用的共性功能: 6 * 7 * 8 */ 9 10 /*class Fu {// extends Object 11 Fu(){ 12 super(); 13 } 14 } 15 class Zi extends Fu { 16 Zi(){ 17 super(); 18 } 19 } 20 */ 21 class Person extends Object{ 22 private int age; 23 Person(int age){ 24 this.age = age; 25 } 26 //比较Person的年龄。是否是同龄人 27 /*public boolean compare(Person p) { 28 return this.age == p.age; 29 }*/ 30 /* 31 * 一般都会覆盖此方法,根据对象的特有内容,建立判断对象是否相等的依据。 32 */ 33 public boolean equals(Object obj) {//重写 34 if(!(obj instanceof Person)) { 35 throw new ClassCastException("类型错误"); 36 } 37 Person p = (Person)obj; 38 return this.age == p.age; 39 } 40 41 public int hashCode() { 42 return age;//重写哈希值,以年龄作为哈希值 43 } 44 } 45 class Demo { 46 47 } 48 49 50 public class ObjectDemo { 51 public static void main(String[] args) { 52 Person p1 = new Person(20); 53 Person p2 = new Person(20); 54 Person p3 = p1; 55 Demo d = new Demo(); 56 System.out.println(p1==p2); 57 System.out.println(p1.equals(p3)); 58 //System.out.println(p1.equals(d)); 59 System.out.println(p1); 60 System.out.println(Integer.toHexString(p1.hashCode()));//十进制转十六进制 61 62 } 63 } 64 65 //注意: 66 //当equals方法被重写时,通常有必要重写hashCode方法,以维护hashCode方法的常规协定,该协定声明常规对象必须具备相等的哈希码 67 //不光内容相等 哈希码也要相等 证明对象相等的话。