問:什么是Object類?
答:Object類存儲在java.lang包中,是所有java類(Object類除外)的終極父類。當然,數組也繼承了Object類。然而,接口是不繼承Object類的,Object類不作為接口的父類。
下面,我們就通過實例,對object進行分析
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
public class ObjectStu { /*Object類:java里所有類的父類,頂層的類 *equals:判斷兩個對象是否"相等"; *hashcode:返回一個對象的哈希碼值,是一個整數 *因為之后的容器,例如hashset和hashMap會對元素進行去重的處理;所以equals和hashcode需要同時重寫; *重寫之后需要滿足的標準: *當equals的結果為true的時候,要求兩個對象的hashcode值相等; *當equals的結果為false的時候,要求兩個對象的hashcode值不等;(hashcode可以相等,但是如果不等可以提升效率) *toString:返回對象的字符串表示 *作用:方便程序內查看對象屬性,方便調試代碼 *debug學習: *1.在可能出現bug的地方設置斷點 *2.run as debug *3.f6,執行當前代碼;f5,進入當前本句代碼的方法內部;f8,快速跳到下一個斷點,如果沒有下一個斷點,運行余下所有代碼 *equals: *1.一致性:使用對象A調用equals和對象b進行比較,每一次的結果都應該一樣 *2.自反性:對象A調用equals比較對象b和對象b調用equals比較對象a的結果應該一樣 */ public static void main(String[] args) { Person per = new Person("小王",10,150); Person per1 = new Person("小王",20,140); Person per2 = per; System.out.println(per==per1); System.out.println(per.equals(per1)); String str = "123"; str.equals("123"); str.hashCode(); System.out.println(per.hashCode()); System.out.println(per1.hashCode()); System.out.println(per2.hashCode()); System.out.println(per); System.out.println(per1); } } class Person { String name; int age; int height; public Person(String name, int age,int height) { super(); this.height = height; this.name = name; this.age = age; } /*@Override public boolean equals(Object obj) { if(this==obj){ return true; } if(obj instanceof Person){ Person per = (Person)obj; if(this.name.equals(per.name)&&this.age==per.age){ return true; } } return false; }*/ //重寫hashcode /*@Override public int hashCode(){ return name.hashCode()+age*31+height*31; }*/ @Override public int hashCode() { final int prime = 31 ; int result = 1 ; result = prime * result + age; result = prime * result + height; result = prime * result + ((name == null ) ? 0 : name.hashCode()); return result; } @Override public Boolean equals(Object obj) { if ( this == obj) return true ; if (obj == null ) return false ; if (getClass() != obj.getClass()) return false ; Person other = (Person) obj; if (age != other.age) return false ; if (height != other.height) return false ; if (name == null ) { if (other.name != null ) return false ; } else if (!name.equals(other.name)) return false ; return true ; } @Override public String toString() { return "Person[name=" +name+ ",age=" +age+ "]" ; } } |
總結
以上就是本文關于java中object類實例分析的全部內容,希望對大家有所幫助。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
原文鏈接:http://blog.csdn.net/wanghuiwei888/article/details/78797585