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

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

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

  • 基本数据类型 (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.包装类的应用场景

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

  • 集合类存储 :集合类(如 ArrayList、HashMap 等)不能直接存储基本数据类型,而只能存储对象。因此,包装类被广泛用于集合中。
  • 处理字符串 :包装类提供了将字符串转换为数字和将数字转换为字符串的功能。例如,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 转换为 int,Double.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
相关推荐
小羊没烦恼!3 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里3 天前
java中的继承和多态的区别
java
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕3 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码3 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖3 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时3 天前
01-06-A-JVM排查实战详解
java·jvm
vipxieliang3 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
ba_pi3 天前
mysql 查询所有表名并授权
java
ProcessOn官方账号3 天前
java函数式编程--入门基础
java·编程·函数式编程