兩個變數引用的物件要怎樣才算相等?

2021-10-22 21:19:52 字數 686 閱讀 7524

兩個變數引用的物件要怎樣才算相等?

引用完全相同的物件,還是有相同狀態和行為的不同物件也算?

這是乙個很關鍵的議題:引用相等性和物件相等性。

1. 引用相等性:堆上同乙個物件的兩個引用

也就是說兩個引用變數引用的就是同乙個物件,hashcode()預設的行為會返回每個物件特有的的序號,大部分是根據記憶體位置計算的。既然本就是同乙個物件,hashcode()自然是一樣的,兩個引用自然也是相等的

2.物件相等性:堆上的兩個不同物件在意義上是相同的

理論上來說要讓兩個不同的物件視為相等的,首先兩個物件的hashcode()必須相同,然後要確保乙個物件呼叫另乙個物件為引數的equals()會返回true //equals比較位元組組合

關於引用相等性,很好理解:假如乙個女孩跟你和你兄弟同時談戀愛(你們兩個都引用她),突然有一天你們三個碰到一起了(判斷物件是否相等),那麼你和你兄弟會說,哦原來我們的物件是相等的(返回true)

關於物件相等性,可以這麼理解吧,兩個物件被分別new出來的時候不是同乙個物件,但是經過你的改造:覆蓋了hashcode()和equals()方法(改變了他們倆的家庭住址和位元組組合讓他們變成一樣的),於是他們也就相等了,至於怎麼覆蓋來實現相等,方法很多

兩個不同的檔案相互引用全域性變數

乙個工程下有很多檔案,都是用makefile進行管理的,但是乙個檔案怎麼去呼叫另外乙個檔案中的全域性變數呢?這個工作也涉及了很多,簡單實用。mapan localhost csdn ls a.c b.c b.h mapan localhost csdn cat a.c include include...

交換兩個變數的值

交換兩個變數的值 交換兩個變數的值是我們學習c語言常見的問題,通常我們採取的方式是定義中間變數,通過中間變數交換這兩個變數值。1 直接在主函式裡完成 int a 2,b 3 int t t a a b b t 2 通過定義swap 完成交換,其中可以通過引用 位址傳遞完成變數值交換 引用 inclu...

4 變數的兩個作用

一 變數的第乙個作用是儲存資料 一 先寫一段資料,進行運算 as 我想和你一起學習 二 寫一下自己的收穫 1 設定了變數as,這個相當於乙個容器,算是牛奶盒子吧。2 我想和你一起學習 這是變數的內容。3 使用了這個盒子裝起來以後,這樣變數拿起來就比較容易了。上面的演示中,我想要列印五次,就不用每次都...