Integer 型別數值判斷相等的坑

2021-08-20 11:24:33 字數 933 閱讀 3105

記錄乙個曾面試遇到的題目,看似簡單,實則有坑。

題目:

public static void main(string args)
寫下輸出結果:

true

false

以上是正確答案,親測。

why?因為本姑娘答了兩個

true,然後......(不說了,都是淚)

我們在給

integer

型別變數賦值時,

integer

類會呼叫下面這個

valueof

方法。

what?

再看看low

和high

的值:

(畫的有點醜,手抖)

結論:

1.如果沒有通過屬性配置high的值,這預設為127。low的值為-128。

2. integer

型別的值在[-128,127] 區間,用 「==」則為true。

其他值都是通過new integer(i)返回的,重新開闢了記憶體新建了物件,不同物件之間必然為false。

3.integer

物件判斷是否相等可使用

equals

或.intvalue()

方法,intvalue()

方法返回

int型別,

int為基本型別,判斷是否相等就是可使用

==經驗就是遇到足夠多的坑然後填掉

Integer值判斷是否相等問題

今天發現了乙個奇怪的問題 integer allrightstotal 140 integer allrightslasttotal 140 if allrightstotal allrightsinit 最後得出的結論是 對於integer值比較有範圍規定 integer 型別的值在 128,12...

Integer值判斷是否相等問題

昨天在開發中遇到乙個問題,定義了兩個integer變數,暫且定義為integer a integer b 這兩個值由前端賦值並傳到後台,前台傳的是a 12345,b 12345,但我在後台比較的時候 if a b 卻返回false,好無語啊,不都是123嗎?為什麼返回false,後來改為equals...

Integer值判斷是否相等問題

在開發中遇到乙個問題,定義了兩個integer變數,暫且定義為integer a integer b 這兩個值由前端賦值並傳到後台,前台傳的是a 12345,b 12345,但我在後台比較的時候 if a b 卻返回false,後來改為equals 返回true。總結如下 我們知道integer是i...