相信大家的回答都是假的真的。
但在這裏我必須說,這個答案並不是絕對的。c==d壹定是真的,但a==b不壹定是假的,但有可能是真的。
但是我得到的值是真的,真的。如果妳不相信或者有疑問,請往下看!
我們首先要明白為什麽答案通常是假的和真的。
整數c = 1000實際上做了整數c = Integer的運算。值為(100)。讓我們來看看Integer.class的源代碼
從上面的代碼可以看出,當I >;= IntegerCache.low & amp& amp我& lt當= IntegerCache.high時,將直接從緩存數組中取值,否則new將是壹個新的Integer對象。
從上面Integer.class的源代碼可以看出,low的默認值是-128,high的值與integerCacheHighPropValue有關。
我們沒有在vm中設置Integercache的時候是127,緩存數組是從-128到127,這就不難理解為什麽了。
短文開頭提到的經典面試題,結果會有假有真。我後面強調的原因不壹定是因為ntegerCacheHighPropValue不為null時,依賴於jvm中的設置。
在eclipse中,我們可以做以下事情:
這時,如果再次執行那個代碼,就會得到true和true的結果。下次再有人問妳這樣的問題,妳可以大聲告訴他,那不壹定是真的。