通常來講,咱們日常知道的都是,數值型對象如Integer比較,會有裝箱和拆箱的過程。並且代碼中很容易就會寫出code
Integer a = xxService.getId() Integer b =yyService.getId(); If(a==b){ }
其中上面這樣寫是有問題的,咱們來看下兩段代碼對象
Integer a = 1000; Integer b = 1000; if (a == b) { System.out.println("true"); } else { System.out.println("false"); }
Integer c = 100; Integer d = 100; if (c == d) { System.out.println("true"); } else { System.out.println("false"); }
運行這兩段代碼結果的時候,你會發現結果是不一樣的
第一段是 false
第二段是 true開發
爲何會這樣呢???
其實這是由於在Java的自動打包中,要求boolean、byte、char 介於-128~127之間的int和short被包裝到固定的對象中,第一段1000顯然超出這個範圍了,因此結果是false。而第二段100在這個範圍內,結果纔是trueget
上面這樣的狀況,其實在開發中咱們是不肯定的,並且不但願發生的,因此要比較整型數字是否相等的時候能夠有如下兩種打包
第一種:用對象的equals方法
public boolean equals(Object obj) 比較此對象與指定對象。
當且僅當參數不爲 null,而且是一個與該對象包含相同 int 值的 Integer 對象時,結果爲 true。方法
上面代碼中比較的地方能夠改成:a.equal(b)
vi
第二種:能夠將Integer的數值取出來比較,a.intValue();co
a.intValue()==b.intValue()
數字