Java是面向对象的编程语言,但它也包含了8种基本数据类型,这8种基本数据类型不支持面向对象的编程机制,基本数据类型也不具备“对象”的特性:没有成员变量、方法可以被调用。Java之所以提供8种数据类型,主要是为了照顾程序员的传统习惯。
这8种基本数据类型带来了一定的方便些,例如可以进行简单、有效的常规数据处理。但在某些时候,基本数据类型会有一些制约,例如所有引用类型的变量都继承了Object类,都可以当成Object类型变量使用。但基本数据类型的变量就不可以。
为了解决8种基本数据类型的变量不能当成Object类型变量使用的问题,Java提供了包装类(Wrapper Class)的概念,为8种基本数据类型分别定义了相同的引用类型,并称之为基本数据类型的包装类。
基本数据类型和包装类对应关系
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
在JDK1.5以前,把基本数据类型变量变成包装类实例需要通过对应包装类的构造器实现。
但从JDK1.5开始,JDK提供了自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)功能。
所谓自动装箱,就是可以把一个基本类型变量直接赋给对应的包装变量,或者赋给Object变量(Object是所有类的父类,子类对象可以直接赋给父类变量);自动拆箱则与之相反,允许直接把包装类对象直接赋给一个对应的基本类型变量。
下面程序示范自动装箱和自动拆箱
public class AutoBoxingUnboxing
{
public static void main(String[] args)
{