問:什么是Object類?
創(chuàng)新互聯(lián)長期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為云縣企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè),云縣網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
答:Object類存儲在java.lang包中,是所有java類(Object類除外)的終極父類。當(dāng)然,數(shù)組也繼承了Object類。然而,接口是不繼承Object類的,Object類不作為接口的父類。
下面,我們就通過實(shí)例,對object進(jìn)行分析
public class ObjectStu { /*Object類:java里所有類的父類,頂層的類 *equals:判斷兩個對象是否"相等"; *hashcode:返回一個對象的哈希碼值,是一個整數(shù) *因?yàn)橹蟮娜萜?例如hashset和hashMap會對元素進(jìn)行去重的處理;所以equals和hashcode需要同時重寫; *重寫之后需要滿足的標(biāo)準(zhǔn): *當(dāng)equals的結(jié)果為true的時候,要求兩個對象的hashcode值相等; *當(dāng)equals的結(jié)果為false的時候,要求兩個對象的hashcode值不等;(hashcode可以相等,但是如果不等可以提升效率) *toString:返回對象的字符串表示 *作用:方便程序內(nèi)查看對象屬性,方便調(diào)試代碼 *debug學(xué)習(xí): *1.在可能出現(xiàn)bug的地方設(shè)置斷點(diǎn) *2.run as debug *3.f6,執(zhí)行當(dāng)前代碼;f5,進(jìn)入當(dāng)前本句代碼的方法內(nèi)部;f8,快速跳到下一個斷點(diǎn),如果沒有下一個斷點(diǎn),運(yùn)行余下所有代碼 *equals: *1.一致性:使用對象A調(diào)用equals和對象b進(jìn)行比較,每一次的結(jié)果都應(yīng)該一樣 *2.自反性:對象A調(diào)用equals比較對象b和對象b調(diào)用equals比較對象a的結(jié)果應(yīng)該一樣 */ 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+"]"; } }
總結(jié)
以上就是本文關(guān)于java中object類實(shí)例分析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
java內(nèi)部測試類代碼詳解
java中繼承測試代碼分析
java中stack(棧)的使用代碼實(shí)例
如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!