日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA入门级教学之(Object类中的equals方法)

發(fā)布時間:2024/7/23 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA入门级教学之(Object类中的equals方法) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

package com.lbj.javase18;
/**
?* 關于Object中的equals方法:
?*?
?* Object中的equals方法(核心):
?* ?public boolean equals(o2){
?* ? ? return(this==obj);//相當于return(o1==o2);中間跟的是雙等號==,兩邊引用地址內存相同則true,不同則false
?* ?}
?* ?
?* ?因此,Object中的equals方法比較的是兩個引用的內存地址
?* ?
?* ?但是,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,同時,這里面調用的是當前對象的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){//父類型引用指向子類型對象,如果父類型想調用子類型,需要進行強制轉換
?? ??? ?//int id1=this.id;//這個this.id之所以成立是因為在這個類里面this代表的是Star,因此this包涵有id這個屬性
?? ??? ?//int id2=obj.id;報錯,因為obj里面沒有id這個屬性
?? ??? ?//改正
?? ??? ?//先強制類型轉換
?? ??? ?//Star s=(Star)obj;
?? ??? ?//int id2=s.id;
?? ??? ?
?? ??? ?//這里比較內存地址是否相同
?? ??? ?if(this==obj)return true;//如果內存地址相同的話,equals也成立的意思
?? ??? ?
?? ??? ?//這里比較內容是否相同
?? ??? ?if(obj instanceof Star){//如果obj是Star
?? ??? ??? ? Star s=(Star)obj;//強轉為同一個類型
?? ??? ??? ? if(s.id==this.id&&s.name.equals(name)){//左邊的equals是調用String類型里面重寫的,比較的是字符串,不是內存地址了?? ??? ??? ??
?? ??? ??? ? ?return true;
?? ??? ? ?}
?? ??? ?}
?? ??? ?return false;
?? ??? ?//在java中比較兩個字符串是否一致,不能用"==",只能調用String類的equals方法
?? ??? ?
?? ?}
?? ?
?? ?
}


?

總結

以上是生活随笔為你收集整理的JAVA入门级教学之(Object类中的equals方法)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。