javaObject类—hashCode方法_十六进制javaObject类—hashCode方法_十进制_02
 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 //不光内容相等 哈希码也要相等 证明对象相等的话。
View Code