總結:
public class typetest
* return false;
* }
** 同型別包裝類
* 有效範圍內
* 賦值比較,==、equals均true
* new比較,==均false, equals均true
* 賦值、new比較,==均false, equals均true
* 非有效範圍內
* 賦值比較,==均false, equals均true
* new比較,==均false, equals均true
* 賦值、new比較,==均false, equals均true
* 不同型別包裝類
* equals比較均false(不可以使用==比較)
** 總結:
* 基本資料型別和包裝模擬較, 只要實際值相同, ==為true(拆箱)
* 同型別包裝類equals比較均為true(比較實際值)
* 同型別包裝類==比較,僅有效範圍內賦值比較為true, 其他均false
* 不同型別包裝類equals比較均為false
** 編譯時關鍵在於valueof方法
** integer、short、byte、character、long這幾個類的valueof方法的實現是類似的。
* //範圍內取快取, 範圍外new(-128~127)
* public static integer valueof(int i)
** double、float的valueof方法的實現是類似的。
* public static double valueof(string s) throws numberformatexception
** boolean的valueof方法的實現
* public static boolean valueof(boolean b) **
* integer i = 100; 裝箱 integer i = integer.valueof(100);
* int x = i.intvalue(); 拆箱
*//**
* 有效範圍內
*/int i = 6;
integer i1 = 6; // 反編譯: integer i1 = integer.valueof(6);
integer i2 = 6;
integer i3 = i1;
integer i4 = new integer(6);
integer i5 = new integer(6);
long l1 = 6l;
double d1 = 6.0;
system.out.println("基本資料型別和「賦值」包裝型別==比較:" + (i == i1));//true
system.out.println("基本資料型別和「new」包裝型別==比較:" + (i == i4));//true
system.out.println("「賦值」包裝型別==比較:" + (i1 == i2));//true
system.out.println("「賦值」包裝型別equals比較:" + (i1.equals(i2)));//true
system.out.println("同「賦值」包裝型別equals比較:" + (i1.equals(i3)));//true
system.out.println("「賦值」包裝型別和「new」包裝型別==比較:" + (i1 == i4));//false
system.out.println("「賦值」包裝型別和「new」包裝型別equals比較:" + (i1.equals(i4)));//true
system.out.println("「new」包裝型別==比較:" + (i4 == i5));//false
system.out.println("「new」包裝型別equals比較:" + (i4.equals(i5)));//true
system.out.println("不同包裝型別equals比較:" + (l1.equals(i2)));//false
system.out.println("不同包裝型別equals比較:" + (d1.equals(i5)));//false
/*** 非有效範圍內
*/i = 128;
i1 = 128;
i2 = 128;
i3 = i1;
i4 = new integer(128);
i5 = new integer(128);
l1 = 128l;
d1 = 128.0;
system.out.println("基本資料型別和「賦值」包裝型別==比較:" + (i == i1));//true
system.out.println("基本資料型別和「new」包裝型別==比較:" + (i == i4));//true
system.out.println("「賦值」包裝型別==比較:" + (i1 == i2));//false
system.out.println("「賦值」包裝型別equals比較:" + (i1.equals(i2)));//true
system.out.println("同「賦值」包裝型別equals比較:" + (i1.equals(i3)));//true
system.out.println("「賦值」包裝型別和「new」包裝型別==比較:" + (i1 == i4));//false
system.out.println("「賦值」包裝型別和「new」包裝型別equals比較:" + (i1.equals(i4)));//true
system.out.println("「new」包裝型別==比較:" + (i4 == i5));//false
system.out.println("「new」包裝型別equals比較:" + (i4.equals(i5)));//true
system.out.println("不同包裝型別equals比較:" + (l1.equals(i2)));//false
system.out.println("不同包裝型別equals比較:" + (d1.equals(i5)));//false
}}
//integer、short、byte、character、long這幾個類的valueof方法的實現是類似的。
//範圍內取快取, 範圍外new(-128~127)
public static integer valueof(int i)
//double、float的valueof方法的實現是類似的。
public static double valueof(string s) throws numberformatexception
//boolean的valueof方法的實現
public static boolean valueof(boolean b)
基本資料型別和包裝資料型別的使用標準
強制 所有pojo類屬性必須使用包裝資料型別 強制 rpc方法的返回值和引數必須使用包裝資料型別 推薦 所有區域性變數都推薦使用基礎資料型別。這裡建議我們使用包裝型別,原因是什麼呢?舉乙個扣費的例子,我們做乙個扣費系統,扣費時需要從外部的定價系統中讀取乙個費率的值,我們預期該介面的返回值中會包含乙個...
Java 基本資料型別和包裝類
1.為什麼要用包裝類 將基本資料型別包裝成類,將實現常見的操作,方便使用。8個包裝類都是final修飾,不能被繼承。2.自動裝箱和自動拆箱 自動裝箱 可把乙個基本型別變數直接賦給對應的包裝類物件或則object物件 自動拆箱 允許把 包裝類物件直接賦給對應的基本資料型別 integer i 3 裝箱...
基本資料型別物件包裝類
基本資料型別物件包裝類 基本資料型別 引用資料型別 byte byte short short int integer long long float float double double char characher boolean boolean 基本資料型別物件包裝類最常見作用 就是用於基本...