一:包装数据类型初识
- 除了八种基本数据类型(byte, short, int, long, float, double, char, boolean)之外
- Java还提供了相应的包装数据类型(Wrapper Classes),它们是基本数据类型的对象封装。
- 包装数据类型允许我们以面向对象的方式操作基本数据类型,并提供了一系列实用的方法和功能
二:为什么需要包装数据类型
- 作为集合类元素的类型: Java集合类(如ArrayList等)只能存储对象类型,所以需要将基本数据类型封装成对象类型才能存储。
- 提供额外的方法:包装数据类型提供了一系列实用的方法,如类型转换、比较、解析字符串等。
- 自动装箱和拆箱:Java 5.0及以后版本引入了自动装箱和拆箱功能,基本数据类型和包装数据类型之间的转换更加便捷。
- 基本数据类型与包装数据类型的对应关系
三:包装数据类型的常用方法
- 构造函数:包装数据类型都提供了多个构造函数,用于将基本数据类型转换为包装数据类型对象。
Integer i = new Integer(10); // 使用构造函数
Integer ii = Integer.valueOf(10); // 使用静态方法valueOf(),通常推荐使用
- 类型转换方法:包装数据类型提供了将字符串转换为基本数据类型的静态方法,如 parseInt(), parseDouble() 等。
int number = Integer.parseInt("123"); // 将字符串转换为int
double d = Double.parseDouble("123.45"); // 将字符串转换为double
- 自动装箱和拆箱
-
自动装箱和拆箱是Java 5.0引入的新特性,允许在编译时自动将基本数据类型与包装数据类型进行转换。
-
自动装箱:将基本数据类型自动转换为包装数据类型对象。
Integer i = 10; // 自动装箱,相当于 Integer i = Integer.valueOf(10);
-
自动拆箱:将包装数据类型对象自动转换为基本数据类型
Integer i = 10; int num = i; // 自动拆箱,相当于 int num = i.intValue();
-
四:总结-基本数据类型和包装数据类型区别
- 基本数据类型不用new, 包装类型需要使用new关键字来在堆中分配存储空间
- 存储方式及位置不同,基本类型是直接将变量值存储在栈中,包装类型是将对象放在堆中,然后通过引用来使用
- 初始值不同,基本类型的初始值如int为0,boolean为false,包装类型的初始值为null