當前位置:編程學習大全網 - 源碼下載 - 經典面試題:Integer c=100,d=100,c==d 壹定是false嗎?

經典面試題:Integer c=100,d=100,c==d 壹定是false嗎?

相信大家在面試的過程中可能都遇到過這樣壹道題吧!

相信大家得出的答案都是 false true

但是在這裏我壹定要說,這個答案不是絕對的 c==d 壹定是true,但是a==b 卻不壹定就是false ,也有可能是true。

但是我得到的值是 true,true 如果不相信的同學或者抱有懷疑的同學請往下看!

我們首先要明白 通常情況下為什麽答案會是 false,true。

Integer c = 1000 實際在內部做了 Integer c = Integer.valueOf(100) 的操作。我們來看壹下 Integer.class 的源碼

從上面的代碼中可以看到,當 i >= IntegerCache.low && i <= IntegerCache.high 的時候會從cache數組裏直接取值,否則new壹個新的Integer對象

從上面的 Integer.class 源碼中 可以看出,low的默認值是-128,high的值與 integerCacheHighPropValue 有關,

當我們未對vm中的Integercache進行設置的時候其莫認真是127,cache數組也就是從-128到127,這也就不難理解為什麽

在開文時提到的經典面試題的結果會是false 和 true,之所以我後面強調不壹定,就是因為當 ntegerCacheHighPropValue 不為null的時候取決於jvm中的設置,

在eclipse中我們可以做這樣的操作:

這時候再來執行那段代碼,妳就會得到結果是 true和true,下次誰再問妳這樣的問題,可以大聲的告訴他不壹定,實力裝13壹波!

  • 上一篇:Python開發示例源代碼
  • 下一篇:廣州魯迅紀念館春節有什麽活動廣州魯迅博物館門票
  • copyright 2024編程學習大全網