47-常用类-八大包装类(Wrapper Classes)

1. 问题引出:基本数据类型与对象之间的差异

在 Java 中,基本数据类型(如 intchardouble 等)和对象之间有一些显著的差异:

  • 基本数据类型 (primitive types)是 Java 中的基本构造块,存储的是实际的数据值。例如:int 存储一个整数,boolean 存储一个布尔值,char 存储一个字符等。
  • 对象类型(reference types)是指类和接口类型,存储的是对象的引用,而对象的值存储在堆内存中。

在某些场景下,我们需要将基本数据类型作为对象使用。这时就引出了 包装类(Wrapper Classes)的概念。

2. 包装类

Java 中的 包装类(Wrapper Classes)就是将基本数据类型包装成对象的类。Java 为每种基本数据类型提供了一个对应的包装类,使得我们能够像操作对象一样操作基本数据类型。

3.包装类的使用方法

**装箱:**将 基本数据类型 转换为 对应的包装类对象

**拆箱:**将 包装类 自动转换回 基本数据类型

自动装箱(Autoboxing)

自动装箱是 Java 5 引入的功能,允许编译器自动将 基本数据类型 转换为 对应的包装类对象。例如:

java 复制代码
Integer intObj = 10;  // 自动装箱

自动装箱底层调用的是valueOf方法,比如IntegervalueOf()

自动拆箱(Unboxing)

自动拆箱是指 Java 编译器将包装类自动转换回基本数据类型。例如:

java 复制代码
int num = intObj;  // 自动拆箱

手动装箱和拆箱

包装类的构造方法可以用来手动装箱。例如:

java 复制代码
Integer intObj = new Integer(10);  // 手动装箱,int->integer
int num = intObj.intValue();       // 手动拆箱

4.包装类的应用场景

包装类主要用于以下几个场景:

  • 集合类存储 :集合类(如 ArrayListHashMap 等)不能直接存储基本数据类型,而只能存储对象。因此,包装类被广泛用于集合中。
  • 处理字符串 :包装类提供了将字符串转换为数字和将数字转换为字符串的功能。例如,Integer.parseInt() 用于将字符串转换为整数。
  • 类型转换和比较 :包装类提供了类型转换和比较的方法,例如 Double.compare() 方法可以比较两个 double 值,Integer.valueOf() 可以将 int 转换为 Integer

5.包装类与String类型的转换

1. 从基本数据类型转换为 String

  • 使用 String.valueOf()

String.valueOf() 方法可以将任何类型的数据转换为字符串,包括基本数据类型和对象。它可以将数字、布尔值等转换为对应的字符串表示。

java 复制代码
int num = 123;
String str = String.valueOf(num);  // 输出 "123"
  • 使用 Integer.toString() / Double.toString()

    对于每种基本数据类型的包装类,都有一个 toString() 方法可以直接将包装类对象转换为字符串。

    java 复制代码
    Integer num = 123;
    String str = num.toString();  // 输出 "123"
  • 使用字符串连接操作

通过将基本数据类型与一个空字符串 "" 进行连接,也可以将它转换为 String

java 复制代码
int num = 123;
String str = num + "";  // 输出 "123"

2.从 String 转换为基本数据类型

String 类型转换为基本数据类型时,我们需要使用包装类的 parseX() 方法。例如,Integer.parseInt() 用于将 String 转换为 intDouble.parseDouble() 用于将 String 转换为 double

  • 使用 parseX() 方法

    这些方法会将 String 转换为对应的基本数据类型。如果转换失败(例如字符串不符合数字格式),会抛出 NumberFormatException 异常。

    java 复制代码
    String str = "123";
    int num = Integer.parseInt(str);  // 转换为 int,结果为 123
    
    String str2 = "12.34";
    double d = Double.parseDouble(str2);  // 转换为 double,结果为 12.34
  • 使用包装类的 valueOf() 方法

    valueOf() 方法不仅可以将字符串转换为对应的包装类对象,还可以通过自动拆箱(Unboxing)将包装类对象转换为基本数据类型。

    java 复制代码
    String str = "123";
    Integer integer = Integer.valueOf(str);  // 转换为 Integer 对象
    
    // 直接通过自动拆箱获取基本类型
    int num = integer;  // 自动拆箱,num = 123
相关推荐
come112341 小时前
剪映零基础教程
java·linux·运维
16月6日-晴1 小时前
Java面向对象——接口
java·开发语言
苏生Susheng1 小时前
【软件实施】Windows 服务器运维实战
java·运维·服务器·windows·spring boot·javaweb·实施
Java小白笔记1 小时前
Java 实现 ZIP 压缩包生成方案
java·开发语言·网络·7-zip
霸道流氓气质2 小时前
Spring AI 多模态开发指南:图片理解与语音合成
java·人工智能·spring
en.en..2 小时前
Linux mmap 内存映射深度解析:基于帧缓冲 /dev/fb0
java·服务器·前端
洋不写bug2 小时前
链表补充练习,双链表的模拟实现
java·数据结构·链表·双链表·底层实现
后台模板学习2 小时前
用 IM 即时聊天项目一次讲清消息去重算法的踩坑与解决方案
java·数据库·spring
秋名RG2 小时前
2026/6/15 系统故障复盘与整改方案
java·架构