和equery的區別究竟是什麼呢

2021-10-10 18:53:05 字數 1024 閱讀 6528

== 和equals的區別

先來看一下其餘大佬寫的一些理解

1、== : 它的作用是判斷兩個物件的位址是不是相等。即,判斷兩個物件是不是同乙個物件。(基本資料型別 == 比較的是值,引用資料型別 == 比較的是記憶體位址)

2、equals() : 它的作用也是判斷兩個物件是否相等。但它一般有兩種使用情況:

情況1:類沒有覆蓋 equals() 方法。則通過 equals() 比較該類的兩個物件時,等價於通過「==」比較這兩個物件。

情況2:類覆蓋了 equals() 方法。一般,我們都覆蓋 equals() 方法來兩個物件的內容相等;若它們的內容相等,則返回 true (即,認為這兩個物件相等)。

public

class test1

}}

首先 最明顯的區別就是 == 不能比較物件是否相等,而equals()卻可以,那麼是為什麼呢?

上原始碼

public

boolean

equals

(object anobject)

//先去判斷型別是否是string型

if(anobject instanceof

string

)return

true;}

}return

false

;}

看完這個能看出equals是 == 的一種「擴充套件」(但是基本型別不能使用equals),equals底層也是使用 == 去進行比較,

1、== 對於基本型別來說是值比較,對於引用型別來說是比較的是引用;

而 equals 預設情況下是引用比較,只是很多類重新了 equals 方法,

比如 string、integer 等把它變成了值比較,

所以一般情況下 equals 比較的是值是否相等。

2、 ==是乙個運算子 而 equals()是乙個方法,所以equals()可以被重寫,可擴充套件型比較強。

3、如果沒有對equals方法進行重寫,則比較的是引用型別的變數所指向的物件的位址

Bundle 究竟是什麼?

bundle用於場景 在我印象中比較深刻的是,一般用於activity之間傳遞數值,也用於handler傳送訊息,如下 intent intent new intent bundle bundle new bundle bundle.putstring key value intent.putext...

分析EOF究竟是什麼

eof僅僅是一種狀態或者說條件,需要觸發。read呼叫遇到檔案結尾,觸發該條件,結果將返回0。針對eof,對於標準輸入裝置,普通檔案,管道檔案,網路套接字檔案是read如何觸發呢?下面程式將說明 server.c 是socket套接字服務端,目的為了網路套接字檔案是read如何觸發測試用的。serv...

分析EOF究竟是什麼

eof僅僅是一種狀態或者說條件,需要觸發。read呼叫遇到檔案結尾,觸發該條件,結果將返回0。針對eof,對於標準輸入裝置,普通檔案,管道檔案,網路套接字檔案是read如何觸發呢?下面程式將說明 server.c 是socket套接字服務端,目的為了網路套接字檔案是read如何觸發測試用的。serv...