Java中兩個new的物件對 做比較可以返回true嗎?

時間 2021-06-01 05:22:16

1樓:東吳大嘟嘟

自己overload==這個operator是有可能返回true的。但是單純比較的話,比較的是兩個object的reference物件是不是乙個。

2樓:北南

或許他說的是這個?

Integer a = 127Integer b = 127System.out.println(a == b); //true, 如果是128就是false了

又或許是

String s1 = "abc"String s2 = "abc"System.out.println(s1 == s2);

但是用new就不行了,而且這也和hashcode和equals沒關係。能==的本質是沒建立新物件,用的物件是事先建立好,池化了的而已。

3樓:

單單回答面試官的問題, 答案是可以的.

int a = new Integer(888);

int b = new Integer(888);

System.out.print(a == b);

4樓:林小賤

贊同最高票答案,雖然我的英語渣,但是我還是弱勢得回答一下。。。。

實話說,不能,因為==的實質就是比較引用,說的直觀一點就是比較房子的門牌號,實質比較的是在記憶體中的位址,每乙個物件申請的記憶體空間的位址都是不同的,也就是所謂的標記。這一切在記憶體中申請的過程都是JVM虛擬機器來做。

實話說,面試官的意思是equals()函式配合過載hashcode,通過比較物件中的特定字段,是能達到物件之間的對比返回TRUE的,不過我們必須確定,是比較物件中某個欄位的某個值相等,而不是在記憶體中的位址。只能說這個面試官是不及格的。

5樓:陸宇慶

你跟他說,你要是非要這麼逼我,只能這樣了。。

Strings=

newString

("1")+

newString

("1");s

.intern

();Stringss=

newString

("11"

).intern

();System

.out

.println(ss

==s);

6樓:Ranger

new出來的物件在堆裡面,而引用變數在棧裡,每次new乙個物件,都會重新開闢乙份記憶體,所以返回false。但是如果你重寫equals()方法,只返回ture,那麼答案就是ture;

7樓:黃衍聰

不可能因為==對比的是兩個物件本身是否指向同乙個記憶體空間如果是兩個不同的物件的話永遠不可能返回true 除非JVM出bug

8樓:

你肯定是聽錯了。

估計面試官說的是,可不可以通過某種方法實現判斷兩個new的物件相等。應該不會問是不是通過==。

考點的是物件override equals()方法,並且為什麼override equals()的同時還應該override hashCode()函式。

9樓:

請問基本資料型別的==是怎麼實現的?前天面試的時候,面試官說在jdk編譯的時候,會轉為為equals。是這樣嗎?@RednaxelaFX

10樓:富達巨巨

他的意思是問你能不能 new 出2個object equals, 通過重寫equals/hashcode來使2個object相等。而不是用==.

你這技術面不行啊

11樓:laughing

我覺得可以,面試官的意思是要在你這個類重寫hashcode方法實現==返回真。我學了乙個多月了,學到集合框架,所以只能用當前知識回答,後面不知道有沒有別的東西。也沒試過,望題主驗證後指出錯誤我好改正。

如果什麼都不做,兩個new物件的位址是不一樣的,這個位址是預設hashcode安16進製制轉換的雜湊碼。

1.生成物件後,如果物件1=物件2,那麼再物件1==物件2,應該是true

2.equal 如果物件有很多屬性,你可以重寫equal方法,比如只要物件名字,年齡相同就認為equal返回真,而不考慮其他屬性。

3.重寫hashcode方法,你可以將屬性的值作為得到雜湊碼的根本,比如年齡,做的時候你將年齡十位個位分開加到雜湊碼,這樣如果兩個物件除了年齡不一樣,其他的一樣,但是乙個年齡是32,乙個是23,用我們的雜湊碼方法得到的兩個物件的雜湊碼應該是一樣的,這個時候物件1==物件2返回真,但是物件1equal物件2返回假.

總結就是,比較兩個物件,equal比較的是equal方法的結果, ==比較的是雜湊方法的結果。

面試老師的意思應該是,如果按照重寫的雜湊方法,兩個物件能得到相同的雜湊碼(比如我上面3的內容,乙個32歲乙個23歲,其他屬性一樣,得到的雜湊碼是一樣的),這時用==兩個物件就能返回真了。

另外:你可以參考set判斷重複元素,它就是先判斷雜湊,再判斷equal.所以根據規範,對於set,重寫equal方法,同時也要重寫雜湊方法。

12樓:樂百事

new 不同物件記憶體位址不同,==判斷為false,不能為true。感覺面試官的問題意思應該是問==與equals()的區別。另外,equals()相等時,hashcode()是否相等;hashcode()相等時,equals()是否相等。

13樓:RecedMorted

他指的莫非是這個

String a = new String("字串");

String b = new String("字串");

a.equals(b) ==> true

a.hashCode() == b.hashCode() ==> true

卡爾曼濾波能否對兩個模型做融合?

當然可以,直接狀態擴增即可,只不過狀態維數可能就翻倍了。實際上1965年就有Multiple Model Adaptive Estimation MMAE 1 這種技術了,新一點的也有Interacting Multiple Model IMM 2 思路其實都差不多。問題在於工業應用中這樣做很蠢,一...

關於java中物件和泛型的乙個小問題?

第二個問題,第一種情況是因為String是Object的子類,所以可以。第二種,你new出來的list1是Object集合,說明裡面可以放任何型別,要是能等於String集合,不就只能放String 了麼,所以報錯了。第乙個不了解,應該是乙個吧。下班路上手機打字應該不嚴謹,一會更新 1 就new O...

如何分析這兩個情況中杆對小球的力

TaiTui 事實上所謂的 杆力沿杆 只對二力杆有效。第一種情況確實是二力杆,第二種不是。有可能你會問,如果把第二種情況的杆拆成兩個部分,不還是二力杆嗎?確實不是的。如果真的是兩個杆的連線,若要滿足題意,即兩球的角速度始終相等,就不能只有乙個接觸點,也就是用 絞接 的方法連線。也就是說,不能假設杆完...