文章目录
基本数据类型:
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)】