名师讲坛:Java开发实战经典(第2版)
上QQ阅读APP看书,第一时间看更新

6.12 包装类

引用数据类型可以使用Object进行数据类型的统一,但在Java中除了引用数据类型之外还存在基本数据类型,本节将为读者介绍如何利用Object类接收基本数据类型的操作。

6.12.1 包装类介绍

在Java的设计中提倡一种思想,即一切皆对象,那么这样一来就出现了一个矛盾,从数据类型的划分中可以知道Java中的数据类型分为基本数据类型和引用数据类型,但是基本数据类型怎么能够成为对象呢?此时,就需要将这8种基本类型变为一个类的形式,那么这也就是包装类的作用。包装类与基本数据类型的关系如表6-5所示。

表6-5 包装类

在表6-5所列的类中,除了Integer和Character定义的名称与基本类型定义的名称相差较大,其他6种类型的名称都是很好掌握的。而且读者可以从JDK文档中发现包装类中的继承关系。

(1)Integer、Byte、Float、Double、Short、Long都属于Number类的子类,Number类本身提供了一系列的返回以上6种基本数据类型的操作。

(2)Character属于Object的直接子类。

(3)Boolean属于Object的直接子类。

Number类是一个抽象类,主要是将数字包装类中内容变为基本数据类型,Number类中定义的方法如表6-6所示。

表6-6 Number类定义

本章重点讲解的是Integer、Float类型,其他类型的具体操作读者可自行查阅JDK文档。

6.12.2 装箱与拆箱

在了解包装类的概念之后,下面介绍包装类的装箱与拆箱的概念,其实这两个概念本身并不难理解,将一个基本数据类型变为包装类,这样的过程称为装箱操作,而将一个包装类变为基本数据类型这样的过程称为拆箱操作。

【例6.53】装箱及拆箱操作

上面的代码演示了一个将基本数据类型进行装箱,以及将一个包装类拆箱的操作,为了加深读者的理解,下面再看一个将浮点数装箱及拆箱的操作。

【例6.54】装箱及拆箱

上面的程序的功能与之前的类似,只是换了一个数据类型而已。而且读者也可以发现,对于拆箱操作中使用的方法就是Number类中定义的方法。

上面的程序都要求进行手工装箱及手工拆箱操作,这是在JDK 1.5之前的做法,在JDK 1.5之后提供了自动的装箱及拆箱操作。

【例6.55】自动装箱及拆箱操作

6.12.3 包装类应用

前面已经为读者详细地介绍了包装类的基本概念,那么包装类在实际中用得最多的还在于字符串变为基本数据类型的操作上,例如,将一个全由数字组成的字符串变为一个int或float类型的数据。在Integer和Float类中分别提供了以下两种方法:

(1)Integer类(字符串转int型)

(2)Float类(字符串转float型)

但是在使用以上的两种操作时,一定要注意字符串必须由数字组成。

提示

方法声明的throws说明。

上述两种方法中,在这两类操作语句中存在throws语句,这表示的是异常处理语句,在之后的异常的捕获及处理章节里为读者介绍,此处可以暂不理解此语句作用。

【例6.56】字符串变为基本数据类型

程序执行结果:

在这里要再次提醒读者的是,对于以上的转型操作中,字符串中的数据必须由数字组成,否则转换时肯定出现程序错误。