下面 Integer 型別的數值比較輸出的結果為?

2021-08-21 03:09:03 字數 895 閱讀 4989

輸出:f1==f2    結果為  true

f3==f4    結果為  false

解析:如果整型字面量的值在-128 到 127 之間,那麼不會 new 新的 integer 物件,而是直接引用常量池

中的 integer 物件,所以上面的題中 f1==f2 的結果是 true,而 f3==f4 的結果是 false。

首先需要注意的是 f1、f2、f3、f4 四個變數都是 integer 物件引用,所以下面的==運算比較的不是值而是引用。裝箱的本質是什麼呢?當我們給乙個 integer 物件賦乙個 int 值的時候,會呼叫 integer 類的靜態方法 valueof,如果看看 valueof 的源**就知道發生了什麼?

原始碼:

integercache 是 integer 的內部類,其**如下所:

簡單的說,如果整型字面量的值在-128 到 127 之間,那麼不會 new 新的 integer 物件,而是直接引用常量池

中的 integer 物件,所以上面的題中 f1==f2 的結果是 true,而 f3==f4 的結果是 false。

Integer 型別數值判斷相等的坑

記錄乙個曾面試遇到的題目,看似簡單,實則有坑。題目 public static void main string args 寫下輸出結果 true false 以上是正確答案,親測。why?因為本姑娘答了兩個 true,然後.不說了,都是淚 我們在給 integer 型別變數賦值時,integer ...

兩個Integer型別數值比較大小的坑

先看一段 1 integer number 127 2 integer number2 127 3 integer number3 128 4 integer number4 128 5if number number2 else 10if number3 number4 else 1516 輸出結...

Integer型別資料的比較

我們在做integer資料比較的時候,會有意想不到的結果,通過看integer的原始碼,問題迎刃而解。這裡的論述建立在jdk版本是1.8 intger類有個靜態內部類integercache,是用於快取intger物件的。這裡會快取 128 到127的資料。private static class ...