文章目錄
基本數據類型:
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)】