java中object類實(shí)例分析
問:什么是Object類?
答:Object類存儲(chǔ)在java.lang包中,是所有java類(Object類除外)的終極父類。當(dāng)然,數(shù)組也繼承了Object類。然而,接口是不繼承Object類的,Object類不作為接口的父類。
下面,我們就通過實(shí)例,對(duì)object進(jìn)行分析
public class ObjectStu {
/*Object類:java里所有類的父類,頂層的類
*equals:判斷兩個(gè)對(duì)象是否"相等";
*hashcode:返回一個(gè)對(duì)象的哈希碼值,是一個(gè)整數(shù)
*因?yàn)橹蟮娜萜?例如hashset和hashMap會(huì)對(duì)元素進(jìn)行去重的處理;所以equals和hashcode需要同時(shí)重寫;
*重寫之后需要滿足的標(biāo)準(zhǔn):
*當(dāng)equals的結(jié)果為true的時(shí)候,要求兩個(gè)對(duì)象的hashcode值相等;
*當(dāng)equals的結(jié)果為false的時(shí)候,要求兩個(gè)對(duì)象的hashcode值不等;(hashcode可以相等,但是如果不等可以提升效率)
*toString:返回對(duì)象的字符串表示
*作用:方便程序內(nèi)查看對(duì)象屬性,方便調(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,快速跳到下一個(gè)斷點(diǎn),如果沒有下一個(gè)斷點(diǎn),運(yùn)行余下所有代碼
*equals:
*1.一致性:使用對(duì)象A調(diào)用equals和對(duì)象b進(jìn)行比較,每一次的結(jié)果都應(yīng)該一樣
*2.自反性:對(duì)象A調(diào)用equals比較對(duì)象b和對(duì)象b調(diào)用equals比較對(duì)象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í)例分析的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
struts1之簡(jiǎn)單mvc示例_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了struts1之簡(jiǎn)單mvc示例的相關(guān)資料,需要的朋友可以參考下2017-09-09
Java中在時(shí)間戳計(jì)算的過程中遇到的數(shù)據(jù)溢出問題解決
這篇文章主要介紹了Java中在時(shí)間戳計(jì)算的過程中遇到的數(shù)據(jù)溢出問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
SpringBoot實(shí)現(xiàn)快遞物流查詢功能(快遞鳥)
本文將基于springboot2.4.0實(shí)現(xiàn)快遞物流查詢,物流信息的獲取通過快遞鳥第三方實(shí)現(xiàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-10-10
如何通過Java監(jiān)聽MySQL數(shù)據(jù)的變化
對(duì)于二次開發(fā)來(lái)說(shuō),很大一部分就找找文件和找數(shù)據(jù)庫(kù)的變化情況,下面這篇文章主要給大家介紹了關(guān)于如何通過Java監(jiān)聽MySQL數(shù)據(jù)的變化的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03
java中equals和等號(hào)(==)的區(qū)別淺談
java中equals和等號(hào)(==)的區(qū)別淺談,需要的朋友可以參考一下2013-05-05
Java springboot 整合 Nacos的實(shí)例代碼
這篇文章主要介紹了Java springboot 整合 Nacos的實(shí)例,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04

