基本类型与包装类型 - Java基础

72 阅读1分钟

基本数据类型

基本类型包装类型
booleanBoolean
byteByte
shortShort
intInteger
longLong
floatFloat
Doubledouble

有了基本类型还需要包装类型的原因

  • Java是面向对象语言,有些地方需要使用对象,而不是基本类型,比如集合存放的是Object类型
  • 让基本类型也有面向对象特征,丰富基本类型操作

拆箱与装箱

拆箱:将包装类型转成基本类型,通过xxValue方法实现

Integer a = 2;
a.intValue()

装箱:将基本类型转成包装类型,通过valueOf方法实现

Integer.valueOf(2)

基本类型和包装类型的区别

  • 默认值不一样,包装类型默认是null,基础类型是0,false,\u0000
  • 初始化不同,包装类型通过new初始化,基本类型无需初始化
  • 存储方式不同,包装类型存储在堆中(对象存储在堆),基础类型存在栈中

场景一,集合内容自动装箱

List<Integer> list = new ArrayList<>()
list.add(2);  // 自动装箱,list.add(Integer.valueOf(1))

场景二,自动拆箱需注意包装类型为null情况

Integer a = 2
int b = 3
int c = a + b // 如果此时a为null,则会报出空指针异常

场景三,自动拆箱的缓存

Integer a = 3
Integer b = 3
a == b // true

Integer a = 300
Integer b = 300
a == b // false 

原因:引用了缓存机制节省内存,当整型的数值范围是-128 至 127,在装箱操作时,会使用缓存中的对象,而不是重新创建对象

参考资料

Hollis 大神的《2023全新Java面试宝典课程,八股文学习资料》