今天判斷兩個long類型嫂冻,發(fā)現(xiàn)在-128到127是從緩存池取出來的岸晦,所以不能用 = 來比較
public static Long valueOf(long l) {?
?????final int offset = 128; if (l >= -128 && l <= 127) {
?????// will cache return LongCache.cache[(int)l + offset];?
?????} return new Long(l);?
}
Map<Long,Object>存儲一個數(shù)據(jù)官硝,但取數(shù)據(jù)時割卖,key一不小心是Intger類型的時候宴杀,發(fā)現(xiàn)取出來的數(shù)據(jù)為null茅郎,因為Long和Integer的hashcode是不一樣的蜗元,切要小心注意
Integer:
public static int hashCode(int var0) {
return var0;
}
Long:
public static int hashCode(long value) {
return (int)(value ^ (value >>>32));
}