基本型別和引用型別比較的坑
阿新 • • 發佈:2019-01-04
java數值型別分為基本型別和引用型別,這裡以int和Integer型別為例,分析一下在開發過程中遇到的坑
並給出瞭如何規避的方案, 在很多開發場景中我們一般會將入參設定為引用型別譬如Integer,在方法內部可
能會出現比較情況,譬如一個代表order_type的欄位,可能會和我們定義的若干個常量比較,這樣如果定義的
常量也是Integer,就有可能產生bug,根源是Integer變數的儲存的是對應數值的引用,所以兩個代表相同資料的
變數可能引用並不一致,所以導致無法匹配,下面舉個例子
//超出快取範圍(-128 ~ 127), 這個如何解決呢,使用equals方法 Integer i = 1000; Integer j = 1000; System.out.println(i == j); //一個基本型別一個引用型別 == 判斷是按照基本型別的進行轉換判定 int i1 = 1000; Integer j1 = 1000; System.out.println(j1==i1); //快取範圍(-128 ~ 127) Integer i2 = 100; Integer j2 = 100; System.out.println(i2==j2);
結果 : false true true
結果的原因我寫註釋了,不再深述,只是單獨列出來,開發一定注意細節和底層實現原理