基本資料型別 包裝型別 和equals比較

2021-08-28 02:53:39 字數 3594 閱讀 6065

總結:

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 基本資料型別物件包裝類最常見作用 就是用於基本...