封裝物件的裝箱拆箱

2021-10-01 01:45:11 字數 692 閱讀 6500

long a = 999999999l;

integer b = 999999999;

system.out.println(a.lon**alue()==b);

system.out.println(a==b.intvalue());

system.out.println(a.lon**alue()==b.intvalue());

**一下輸出結果:false、false、false? false、false、true?true、true、true?

我們都了解,兩個物件用==比較時,比較的是在記憶體中的存放位址;

那麼a.lon**alue();會返回乙個基本資料型別   與integer b比較,答案應該是false   a==b.intvalue()也一樣

a.lon**alue()==b.intvalue()  則是兩個基本資料型別比較,結果是true

實際輸出結果

true

true

true

莫非前兩個也是基本資料型別的比較? 把斷點打到

public long lon**alue()
public int intvalue() 

發現前兩步,這兩個方法都有呼叫,也就是說,==操作其中乙個做拆箱操作時,另乙個會自動進行拆箱,比較的還是兩個基本資料型別。

具體為什麼會自動拆箱,待續...

裝箱和拆箱,自動裝箱和自動拆箱

以integer的建立為例。裝箱 把基本資料型別轉換成包裝類物件 int integer integer num1 new integer 17 拆箱 把乙個包裝類的物件,轉換成基本型別的變數 integer int int num2 num1.intvalue 自動裝箱 integer num3 ...

裝箱和拆箱

在c 中的有兩種型別的變數 值型別和引用型別。當值型別和引用型別相互轉化時,會發生裝箱和拆箱的過程。這裡有一點要宣告 經過拆箱或裝箱的物件會多出它自己乙份拷貝,如圖所示 從圖可以看出它和它的拷貝不在乙個儲存區域。這也是值型別和引用型別的區別所在。值型別總是在棧中,而引用型別總是在託管堆中。目前j2s...

裝箱和拆箱

裝箱 boxing 和拆箱 unboxing 是c 型別系統中重要的概念。它通過允許任何數值型別的資料被轉換為任何形式型別的物件提供了數值型別和引用型別間的緊密聯絡。裝箱和拆箱使得對在其中任何型別都可以最終被看作物件的型別系統的統一的觀察變為可能。裝箱轉換允許任何數值型別可以隱式地轉換為 objec...