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

Java包装类的用法(附带实例)

说到基本数据类型包装类,我们必须要回顾一下 Java 的数据类型,其中基本数据类型包含了 byte、short、int、long、float、double、char 以及 boolean 共 8 个。包装类就是对这八个基本数据类型进行包装,主要是为了将它们封装成类,从而满足面向对象编程的需要。

包装类的作用包括下面三点:
Java 为我们提供了 8 个包装类,分别对应 8 个基本数据类型,详细的对应关系如下表所示。在编写代码时我们可以直接使用这些包装类,从而简化对基本数据类型的处理。

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

包装类对象的创建很简单,直接将对应的基本数据类型的值赋给包装类变量即可,而不必使用 new 关键字,这是因为编译器会帮我们创建包装类对象。

下面的程序展示了 8 个包装类对象的创建:
public class WrapperTest {
    public static void main(String[] args) {
        Byte byteB = 127;
        Short shortS = 1000;
        Integer intI = 10;
        Long longL = 2000L;
        Float floatF = 6.5f;
        Double doubleD = 7.5D;
        Character charC = 'c';
        Boolean boolB = true;

        System.out.println(byteB);
        System.out.println(shortS);
        System.out.println(intI);
        System.out.println(longL);
        System.out.println(floatF);
        System.out.println(doubleD);
        System.out.println(charC);
        System.out.println(boolB);
    }
}
输出结果为:

127
1000
10
2000
6.5
7.5
c
true


对于基本数据类型与包装类的转换问题,Java 为了便于开发而提供了自动装箱和自动拆箱机制。

所谓自动装箱就是基本数据类型自动转换成对应的包装类对象,比如 int 类型自动转换为 Integer 类。反之,自动拆箱则是包装类转换成对应的基本数据类型,比如 Character 类自动转换为 char 类型。Java 能实现自动转换是拜编译器所赐。

下面的实例程序分别展示了手动转换以及自动装箱和自动拆箱过程:
public class WrapperTest {
    public static void main(String[] args) {
        //手动转换
        int i = 100;
        Integer intI = Integer.valueOf(i);
        //自动装箱
        Integer intI2 = 100;

        //手动转换
        int ii = intI.intValue();
        //自动拆箱
        int iii = intI2;
    }
}
如果是手动转换则需要使用 valueOf() 方法和 intValue() 方法,而自动转换则直接赋值就行了。简单地说,自动装箱和自动拆箱就是将基本数据类型和包装类当成同样的类型直接使用。

字符串是我们最常遇到的对象,它与包装类的转换非常方便,从字符串转换到包装类只需调用包装类的 parsexxx() 方法,而从包装类转换到字符串则统一通过调用 String 类的 valueOf() 方法来实现,例如:
public class WrapperTest {
    public static void main(String[] args) {
        //字符串转换为包装类
        Byte byteB = Byte.parseByte("127");
        Short shortS = Short.parseShort("1000");
        Integer intI = Integer.parseInt("10");
        Long longL = Long.parseLong("2000000000000");
        Float floatF = Float.parseFloat("6.5F");
        Double doubleD = Double.parseDouble("7.5D");
        Boolean boolB = Boolean.parseBoolean("true");

        //包装类转换为字符串
        String byteStr = String.valueOf(byteB);
        String shortStr = String.valueOf(shortS);
        String intStr = String.valueOf(intI);
        String longStr = String.valueOf(longL);
        String floatStr = String.valueOf(floatF);
        String doubleStr = String.valueOf(doubleD);
        String boolStr = String.valueOf(boolB);
    }
}

相关文章