java之裝箱與拆箱

基本數據類型:

byte【1Byte=8bit】、short【2】、int【4】、long【8】、
float【4】、double【8】、
boolean【1bit】、
char【2】、
---------------------------》》》》》》》》》》》》裝箱》》》》》》》》》》》》》------------------------------------------------------
---------------------------《《《《《《《《《《《《拆箱《《《《《《《《《《《《《------------------------------------------------------

包裝類型:

Byte、Short、Integer、Long、
Float、Double、
Boolean、
Character、


1、Integer、Short、Long[-128,127]

1)裝箱

a)new Integer():  //存放在堆中,new一個對象,不存在緩存
b)Integer.valueOf():
c)Integer i = 1;觸發b)自動裝箱

在這裏插入圖片描述
以上說明i3、i33、i5指向同一個對象,why?
valueOf源碼:
在這裏插入圖片描述
IntegerCache類:
在這裏插入圖片描述
可知:

  • 當整數範圍在[-128,127]時【最高不一定是127,可在配置文件中進行配置】,valueOf方法使用緩存【IntegerCache在初始化時進行了緩存】,直接用Integer.cache數組取值,否則就new一個對象【在堆內存中創建】

2)拆箱

Integer t = 100;
a)int t1 = t.intValue();
b)int t2 = i;//自動拆箱

在這裏插入圖片描述
int是基本數據類型,不是面對對象的,只有純數據操作,這也是爲什麼會有包裝類出現。


另:equals和==:

  • ==:操作數都是包裝器類型數據的引用時,比較是否指向同一個對象;但如果其中有一個操作數是表達式,則比較的是數值【觸發自動拆箱】
  • equals:比較數值【自動拆箱】,前提是類型一致【不會進行類型轉換】
    在這裏插入圖片描述
    在這裏插入圖片描述

  • Short一樣
    在這裏插入圖片描述
    在這裏插入圖片描述
  • Long一樣
    在這裏插入圖片描述
    在這裏插入圖片描述

2、Double與Float[無緩存]

在這裏插入圖片描述
why?
在這裏插入圖片描述
無緩存

  • Float一樣
    在這裏插入圖片描述

3、Byte[-128,127]全部

在這裏插入圖片描述
在這裏插入圖片描述

4、Boolean

在這裏插入圖片描述
在這裏插入圖片描述

5、Character[0,127]

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

  • 另:java使用unicode對字符進行編碼【表示範圍爲’\u0000’(0)~’\uffff’(65,535)】
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章