我們在做integer資料比較的時候,會有意想不到的結果,通過看integer的原始碼,問題迎刃而解。這裡的論述建立在jdk版本是1.8
intger類有個靜態內部類integercache,是用於快取intger物件的。這裡會快取-128 到127的資料。
private static class integercache catch( numberformatexception nfe)
}high = h;
cache = new integer[(high - low) + 1];
int j = low;
for(int k = 0; k < cache.length; k++)
cache[k] = new integer(j++);
// range [-128, 127] must be interned (jls7 5.1.7)
assert integercache.high >= 127;
}private integercache() {}
}
我們再看integer.valueof(int i)方法,如果請求的物件是-128-127之間,則直接返回快取中的物件,如果不在這個區間,則會新建乙個物件返回。
public static integer valueof(int i)
我們執行下栗子:
package com.leadbank.util;
public class integertest
}
Integer型別物件比較
先看一段 integer i1 1813 integer i2 1813 system.out.println i1 i2 integer i3 127 integer i4 127 system.out.println i3 i4 列印結果 false true i1 i2 結果是false容易理...
論Integer 型別值比較
j a 中對於包裝模擬較,建議都用equals去比較原因呢 首先我們來看八大基本資料型別的比較 1 1 true 這是因為基本資料型別的值直接掛到變數上了,所以比較值的時候相等。string a new string hello string b new string hello a b false...
Integer和int基本型別的比較
先看幾行 integer a1 100 integer a2 100 system.out.println a1 a2 a1 a2 integer b1 200 integer b2 200 system.out.println b1 b2 b1 b2 integer c1 new integer ...