Java Integer判斷是否相等

通常來講,咱們日常知道的都是,數值型對象如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()數字

相關文章
相關標籤/搜索