JAVA入门级教学之(Object类中的equals方法)
package com.lbj.javase18;
/**
?* 關于Object中的equals方法:
?*?
?* Object中的equals方法(核心):
?* ?public boolean equals(o2){
?* ? ? return(this==obj);//相當于return(o1==o2);中間跟的是雙等號==,兩邊引用地址內(nèi)存相同則true,不同則false
?* ?}
?* ?
?* ?因此,Object中的equals方法比較的是兩個引用的內(nèi)存地址
?* ?
?* ?但是,java對象中的equals方法的設計目的:是判斷兩個對象是否一樣
?* @author 14811
?*
?*/
public class Test01 {
?? ?public static void main(String[] args) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?Object o1=new Object();//因為所有類都默認繼承Object類
?? ??? ?Object o2=new Object();
?? ??? ?
?? ??? ?boolean b1=o1.equals(o2);
?? ??? ?
?? ??? ?System.out.println(b1);//false
?? ??? ?
?? ??? ?//例2
?? ??? ?Star s1=new Star(100,"張三");
?? ??? ?Star s2=new Star(100,"張三");
?? ??? ?Star s3=new Star(111,"張三");
?? ??? ?
?? ??? ?System.out.println(s1.equals(s2));//false,同時,這里面調(diào)用的是當前對象的equals,所以要在當前對象的類中進行重寫
?? ??? ?//但是實際結果我們不想看到這種情況的發(fā)生,因為id號相同就代表是同一個人的意思
?? ??? ?//所以Object中的equals方法也要重寫
?? ??? ?//再一次編譯后就是true了
?? ??? ?System.out.println(s2.equals(s3));//false,id號不一致
?? ??? ?
?? ?
?? ??? ?
?? ?}
}
//例2
class Star{//默認繼承object類
?? ?
?? ?int id;
?? ?String name;
?? ?
?? ?//構造方法
?? ?public Star(int id,String name){
?? ??? ?this.id=id;
?? ??? ?this.name=name;
?? ?}
?? ?
?? ?//開始重寫,到API幫助文檔進行復制重寫
?? ?//需求規(guī)定:如果身份證號一致,并且名字也一致,則代表同一個人
?? ?//s1.equals(s2);
?? ?//相當于 this 和 obj 之間的參數(shù)傳遞比較
?? ?public boolean equals(Object obj){//父類型引用指向子類型對象,如果父類型想調(diào)用子類型,需要進行強制轉(zhuǎn)換
?? ??? ?//int id1=this.id;//這個this.id之所以成立是因為在這個類里面this代表的是Star,因此this包涵有id這個屬性
?? ??? ?//int id2=obj.id;報錯,因為obj里面沒有id這個屬性
?? ??? ?//改正
?? ??? ?//先強制類型轉(zhuǎn)換
?? ??? ?//Star s=(Star)obj;
?? ??? ?//int id2=s.id;
?? ??? ?
?? ??? ?//這里比較內(nèi)存地址是否相同
?? ??? ?if(this==obj)return true;//如果內(nèi)存地址相同的話,equals也成立的意思
?? ??? ?
?? ??? ?//這里比較內(nèi)容是否相同
?? ??? ?if(obj instanceof Star){//如果obj是Star
?? ??? ??? ? Star s=(Star)obj;//強轉(zhuǎn)為同一個類型
?? ??? ??? ? if(s.id==this.id&&s.name.equals(name)){//左邊的equals是調(diào)用String類型里面重寫的,比較的是字符串,不是內(nèi)存地址了?? ??? ??? ??
?? ??? ??? ? ?return true;
?? ??? ? ?}
?? ??? ?}
?? ??? ?return false;
?? ??? ?//在java中比較兩個字符串是否一致,不能用"==",只能調(diào)用String類的equals方法
?? ??? ?
?? ?}
?? ?
?? ?
}
?
總結
以上是生活随笔為你收集整理的JAVA入门级教学之(Object类中的equals方法)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php实现第三方邮箱登录_JavaScr
- 下一篇: python数据库操作sqlite_使用