j**a 中對於包裝模擬較,建議都用equals去比較
原因呢:
首先我們來看八大基本資料型別的比較
1==1 true
這是因為基本資料型別的值直接掛到變數上了,所以比較值的時候相等。
string a = new string("hello");
string b = new string("hello");
a == b false
這是因為值"hello"在堆記憶體中, 變數a是引用的string例項在堆記憶體中的位址。
所以a 和b為false
那麼integer也屬於引用型別,所以建議比較時候用equals
不過integer它內部有integercache , 對於 -128 ~ 127以內的數會在cache中產生,會復用已有物件 , 所以在這個區間內的數用 == 比較也是可以的。
論integer 型別值比較 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型別資料的比較
我們在做integer資料比較的時候,會有意想不到的結果,通過看integer的原始碼,問題迎刃而解。這裡的論述建立在jdk版本是1.8 intger類有個靜態內部類integercache,是用於快取intger物件的。這裡會快取 128 到127的資料。private static class ...
Integer與int值的比較
一般用於比較記憶體位址,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...