Integer與int值的比較

2022-02-17 03:11:14 字數 618 閱讀 5623

==一般用於比較記憶體位址,equals()用於比較object的值,注意int用equals()是會報錯的。

integer i=1

integer k=1

i.equals(k)=true

i==k=true

i.intvalue()==k.intvalue()=true

integer l=129

integer p=129

l.equals(p)=true

l==p=false

l.intvalue()==p.intvalue()=true

綜上所屬integer在棧中的值-128到127是成立的

int o=197

int y=197

o==y=true

integer a=197

integer b=197

a==b=false

同樣值是197,但是integer是重新new了物件的,所以a==b=false。

而int則是將兩個相同的值指向了乙個位址o==y=true。

o==b=true

這是我們很多人**沒有出錯的原因之一,比如從資料庫查出的id用==判斷而沒出錯。

Integer 與int 賦值比較

測試 test public void integertest 執行結果 true true false true 斷點除錯分析結果 i01是引用型別,如圖引用的位址為integer 651 i02是值型別 i03是引用型別,因為引用型別值放在堆裡面,如果堆裡有值,i03這種取值方式就直接引用原有值...

Integer 與int 賦值比較

測試 test public void integertest 執行結果 true true false true 斷點除錯分析結果 i01是引用型別,如圖引用的位址為integer 651 i02是值型別 i03是引用型別,因為引用型別值放在堆裡面,如果堆裡有值,i03這種取值方式就直接引用原有值...

Integer 與int 賦值比較

測試 test public void integertest 執行結果 true true false true 斷點除錯分析結果 i01是引用型別,如圖引用的位址為integer 651 i02是值型別 i03是引用型別,因為引用型別值放在堆裡面,如果堆裡有值,i03這種取值方式就直接引用原有值...