首页 > 代码库 > 包装类

包装类

在开发过程中,有很多的方法接收的参数都是引用类型的对象,此时就无法将一个基本数据类型的数据传入。这是就需要通过包装类将基本数据类型的值包装为引用类型的对象。下表列出了每种基本数据类型对应的包装类:

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

 

 

 

 

 

 

 

包装类和基本数据类型在进行转换时,引入了装箱和拆箱的概念。其中,装箱是指将基本数据类型的值转为引用数据类型,反之,拆箱是指将引用数据类型的对象转为基本数据类型。

Example01.java

public class Example01 {
    public static void main(String[] args) {
        int a = 20;
        Integer in = new Integer(a);
        System.out.println(in.toString());
    }
}

 

运行结果如下:

技术分享

上面的例子演示了包装类Integer的装箱过程,在创建Integer对象时,将int类型的变量a作为参数传入,从而转为Integer类型。同时,由于Object类是所有类的父类,因此可以通过调用toString()方法将Integer的值以字符串的形式打印出来。此处的toString()方法也可以省略。

Integer类除了具有Object类的所有方法之外,还有一些特有的方法。

方法声明 功能描述
static String toBinaryString(int i) 以二进制无符号整数形式返回一个整数参数的字符串
static String toHexString(int i) 以十六进制无符号整数形式返回一个整数参数的字符串
static String toOctalSring(int i) 以八进制无符号整数形式返回一个整数参数的字符串
static Integer valueOf(int i) 返回一个表示指定的int值的Integer实例
static Integer valueOf(String s) 返回保存指定的String的值的integer对象
static int parseInt(String s) 将字符串参数作为有符号的十进制整数进行解析
intValue() 将Integer类型的值以int类型返回

 

 

 

 

 

 

Example02.java

1 public class Example02 {
2     public static void main(String[] args) {
3         Integer num = new Integer(20);
4         int a = 10;
5         int sum = num.intValue() + a;
6         System.out.println("sum=" + sum);
7     }
8 }

 

运行结果如下:

技术分享

 上面的例子演示了拆箱的过程,Integer对象通过调用intValue()方法,将Integer对象转为int类型,从而可以与int类型的变量a进行加法运算,最终得出运算结果。

上面列表中的parseInt()方法在程序中很常用,它是一个静态方法,用于将一个字符串形式的数值转成int类型。

 在使用包装类时,需要注意以下几点:

  • 包装类都重写了Object类的toString()方法,以字符串的形式返回被包装的基本数据类型的值。
  • 除了Character外,包装类都有valueOf(String s)方法,可以根据String类型的参数创建包装类对象,但参数字符串s不能为null,而且字符串必须是可以解析为相应基本类型的数据,否则虽然编译通过,但运行时会报错,如下:
1 Integer i = Integer.valueOf("123");//合法
2 Integer i = Integer.valueOf("12a");//不合法
  • 除了Character外,包装类都有parseXxx(String s)的静态方法,将字符串转换为对应的基本类型的数据。参数s不能为null,而且同样必须是可以解析为相应基本类型的数据,否则虽然编译通过,但运行会报错,如下:
    1 int i = Integer.parseInt("123");//合法
    2 Integer in = Integer.parseInt("12a");//不合法

JDK5.0新特性---自动拆箱和自动装箱

在JDK5.0之前,数学运算表达式中的操作数必须是基本类型的,并且运行结果也是基本类型,包装类和基本类型是不允许进行混合数学运算的,如果想运算,必须要通过拆箱将包装类对象转为基本数据类型的值才行。

 

包装类