首页 > 编程笔记 > Java笔记 阅读:28

包装类是什么,Java包装类的用法(非常详细,附带实例)

包装类(Wrapper Class)是 Java 中一组与基本数据类型对应的类,它们用于将基本数据类型转换成对象。

Java 的基本数据类型包括 int、double、float、char、boolean 等,而包装类分别为 Integer、Double、Float、Character、Boolean 等。

包装类的主要作用是在基本数据类型与对象之间建立桥梁,使得基本数据类型可以像对象一样进行操作。包装类提供了一系列方法来操作基本数据类型,以及将基本数据类型转换为字符串和从字符串中解析为基本数据类型的方法。

常见的包装类与基本数据类型的对应关系如下表所示。除 int 和 char 类型外,其他的类型对应规则就是第一个字母大写。

表:常见的包装类与基本数据类型的对应关系
基本数据类型 包装类
boolean Boolean
byte Byte
char Character
short Short
int Integer
long Long
float Float
double Double

从对象到基本数据类型的转换

Byte、Short、Integer、Long、Float 和 Double 这几个类都是数字相关的包装类,它们有相同的父类 java.lang.Number,如下图所示:


图 1 Number类图

Number 类有 6 个方法可以将包装类对象转换为对应基本数据类型,如下表所示。

方法 功能
byteValue() 将当前包装的对象转换为 byte 类型数据。
doubleValue() 将当前包装的对象转换为 double 类型数据。
floatValue() 将当前包装的对象转换为 float 类型数据。
intValue() 将当前包装的对象转换为 int 类型数据。
longValue() 将当前包装的对象转换为 long 类型数据。
shortValue() 将当前包装的对象转换为 short 类型数据。

但是需要注意的是大范围数字转换为小范围数字时,如果数字本身很大,可能会导致精度的丢失。

示例代码如下:
public class Main {
    public static void main(String args[]) {
        // ① 创建 Integer(5)对象
        Integer num1 = new Integer("5");
        // ② int 整数 5 会自动转换为 Integer 对象,即 Integer(5)
        Integer num2 = 5;

        float f = num1.floatValue();  // 通过 Integer(5)对象的方法获得 float 数字
        long d = num2.longValue();    // 通过 Integer(5)对象的方法获得 long 数字

        System.out.println("Integer 转换为 float:" + f);
        System.out.println("integer 转换为 long:" + d);
    }
}

程序运行结果如下:

Integer 转换为 float:5.0
integer 转换为 long:5

从基本数据类型到对象的转换

每一个数字包装类都提供一些静态 valueOf() 方法返回数字包装类对象。以 Integer 为例,方法定义如下:
示例代码如下:
public class Main {
    public static void main(String args[]) {
        Integer num1 = Integer.valueOf(9);      // 9
        Double num2 = Double.valueOf(5);        // 5.0
        Float num3 = Float.valueOf("80");       // 80.0

        System.out.println(num1);
        System.out.println(num2);
        System.out.println(num3);
    }
}
运行结果为:

9
5.0
80.0

将字符串转换为基本数据类型

每一个数字包装类都提供一些静态 parse×××() 方法将字符串转换为对应的基本数据类型。以 Integer 为例,方法定义如下:
示例代码如下:
public class Main {
    public static void main(String args[]) {
        Integer num1 = Integer.valueOf("888", 16); // 2184
        int num2 = Integer.parseInt("AB", 16);    // 171
        int num3 = Integer.parseInt("1001", 2);   // 9

        System.out.println(num1);
        System.out.println(num2);
        System.out.println(num3);
    }
}
运行结果为:

2184
171
9

相关文章