java中Object和Objects类、toString方法和equals方法介绍
生活随笔
收集整理的這篇文章主要介紹了
java中Object和Objects类、toString方法和equals方法介绍
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Object類:
Object類位于java.lang包中,lang包下的類無(wú)需導(dǎo)包就可以使用,object是Java語(yǔ)言中的根類,即所有類的父類。Object中描述的所有方法其子類都可以使用。在對(duì)象實(shí)例化的時(shí)候,最終找的父類就是Object。
如果一個(gè)類沒有指定父類, 那么默認(rèn)則繼承Object類。
Object類中包含多個(gè)方法,這里先介紹幾個(gè)常用方法:toString、equals,如:
//1. java.lang.Object類是類層次的根類(最頂層的類),所有類默認(rèn)都繼承了此類:下面將使用Object類中的toString方法進(jìn)行測(cè)試(不手動(dòng)繼承Object類的情況下), // toString方法講一個(gè)對(duì)象轉(zhuǎn)換為字符串 public class ObjecttoString{public static void main(String[] args){// 3.創(chuàng)建一個(gè)學(xué)生類的對(duì)象:StudentClass studentone = new StudentClass("韓梅梅",18);// 4.studentone對(duì)象調(diào)用toString方法:String str = studentone.toString();System.out.println(studentone);//StudentClass@2a3046daSystem.out.println(str);//StudentClass@2a3046da,可以看到這里打印的結(jié)果和直接打印對(duì)象的結(jié)果一樣,打印應(yīng)用型數(shù)據(jù)時(shí)其結(jié)果是引用數(shù)據(jù)類型的地址值,如果想要得到更精確的結(jié)果,可以覆蓋重寫toString方法使其答應(yīng)對(duì)象的屬性(StudentClass中覆蓋重寫)// 當(dāng)覆蓋重寫toString方法后返回的結(jié)果為兩次:名字:韓梅梅,年齡:18,// 6.equals方法用于比較兩個(gè)對(duì)象的地址值是否相等,返回布爾值;equals方法默認(rèn)比較的是兩個(gè)對(duì)象的地址值是否相等是沒有什么意義的,既是兩個(gè)對(duì)象的屬性值相等,也是返回false,一般需要重寫此方法,來(lái)實(shí)現(xiàn)比較屬性值相等就返回true。StudentClass studenttwo = new StudentClass("李雷",19);StudentClass studentthree = new StudentClass("韓梅梅",18);boolean result1 = studentone.equals(studenttwo);boolean result2 = studentone.equals(studentthree);boolean result3 = studenttwo.equals(studentthree);System.out.println(result1);//falseSystem.out.println(result2);//false,equals方法默認(rèn)比較地址值是否相等,因此這里既是值相等,也返回false,如果想要比較對(duì)象值是否相等,那么就要重寫equals方法,覆蓋重寫后的結(jié)果為true;System.out.println(result3);//falseSystem.out.println("str1".equals("str1"));//true} }; /* 2.定義一個(gè)標(biāo)準(zhǔn)的學(xué)生類:任何類默認(rèn)都繼承了Object類,實(shí)際是:public class StudentClass extends Object{}, 既是沒有手動(dòng)的寫繼承,但是默認(rèn)是繼承了Object類的,因此Object類中的任何方法都可以在當(dāng)前類使用: */ public class StudentClass{// 定義成員變量:private String name;private int age;// 定義無(wú)參構(gòu)造:public StudentClass(){};// 定義全參構(gòu)造:public StudentClass(String names,int ages){this.name = names;this.age = ages;};// name的get-和set-方法:public String getName(){return name;};public void setName(String names){this.name = names;};// age的get-和set-方法:public int getAge(){return age;};public void setAge(int ages){this.age = ages; };// 5.覆蓋重寫Object類中的toString方法使其返回成員變量的值:(實(shí)際開發(fā)中可以使用idea開發(fā)工具中的快捷鍵進(jìn)行覆蓋重寫,沒必要自己動(dòng)手,ArrayList類和Scanner類中默認(rèn)重寫了此方法)@Overridepublic String toString(){// return name;只返回name屬性值// return age;只返回age屬性值return "名字:"+name+",年齡:"+age;}// 7.覆蓋重寫equals方法使其比較兩個(gè)對(duì)象的屬性:equals方法中傳入的是一個(gè)對(duì)象,這里隱含一個(gè)多態(tài)的問題,父類無(wú)法使用子類特有的內(nèi)容(屬性或方法);// Object obj = studentone = new StudentClass("韓梅梅",18);obj表示的是equals接收的對(duì)象,可以看到最左邊和最右邊構(gòu)成多態(tài)的結(jié)構(gòu):父類指向子類,父類無(wú)法訪問子類的屬性或方法,如果真要訪問那就要向下轉(zhuǎn)型(把obj的類型轉(zhuǎn)換為StudentClass類型)@Override//實(shí)際開發(fā)中也無(wú)需手動(dòng)重寫此方法,可借助idea開發(fā)工具中快捷鍵Alt+inset自動(dòng)生成。public boolean equals(Object obj){if (obj == null) return false;//如果傳入的一個(gè)空值,那么直接返回false,無(wú)需進(jìn)行下面代碼,可以提高程序效率。if (obj == this) return true;//如果傳入的是本身,那么直接返回true,無(wú)需執(zhí)行下面代碼,可以提高程序效率。// 向下轉(zhuǎn)型將obj為Object類型轉(zhuǎn)換為StudentClass類型,使其可以比較屬性或方法:if(obj instanceof StudentClass){//添加此判斷是防止傳入非StudentClass類型的數(shù)據(jù)導(dǎo)致轉(zhuǎn)型異常報(bào)錯(cuò)StudentClass student = (StudentClass)obj;// 進(jìn)行比較屬性值并將布爾值賦值給變量res:boolean res = this.name.equals(student.name) && this.age == student.age;//this代表當(dāng)前對(duì)象,student表示傳入的對(duì)象(equals接收的對(duì)象),覆蓋重寫此方法時(shí),應(yīng)將所有屬性都進(jìn)行比較,結(jié)合邏輯與得到比較結(jié)果。// 返回比較的值:return res;};return false;//以上兩種情況除外,當(dāng)傳入其他類型時(shí),也直接返回false;} };Objects類:
Objects是一個(gè)工具類,它提供了一些方法來(lái)操作對(duì)象,它由一些靜態(tài)的方法組成,并且這些方法允許空指針的出現(xiàn),用于計(jì)算對(duì)象的hashcode、返回對(duì)象的字符串表示形式、比較兩個(gè)對(duì)象等,如:
// 1.使用時(shí)導(dǎo)入Objects類: import java.util.Objects; public class ObjectsEquals{public static void main(String[] args){String str1 = null;String str2 = "kuhai";boolean result = Objects.equals(str1,str2);//允許傳入空指針值,如果是Object使用null會(huì)報(bào)錯(cuò)。System.out.println(result);//false/*其源碼:public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b)); } */} }提示:本文圖片等素材來(lái)源于網(wǎng)絡(luò),若有侵權(quán),請(qǐng)發(fā)郵件至郵箱:810665436@qq.com聯(lián)系筆者刪除。
筆者:苦海
總結(jié)
以上是生活随笔為你收集整理的java中Object和Objects类、toString方法和equals方法介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的世界java和基岩版哪个好玩_我的世
- 下一篇: java中关键字、标识符、常量、变量、数