由于java中的数据类型int,double等不是对象,所以无法通过向上转型得到Object提供的方法,而像String却可以,原因是String是一个对象而不是一个类型。java提供包装类就是为了解决,基本数据类型因为上述的特性,导致无法参与转型,泛型,反射等过程的问题。包装类根据名称可以得知,就是将基本的数据类型以及一些辅助方法包装到类中。
基本数据类型所对应的引用数据类型,可实现自动装箱和自动拆箱:
例如实现一个int的包装类型 代码如下:
class IntDemo
{
private int num;
public IntDemo(int num)
{
this.num = num;
}
public int intValue()
{
return this.num;
}
}
那么java提供哪些包装类呢?主要包括下面两种。
第一种,对象型包装类,它不继承任何其他类(Object的直接子类);代码展示如下:// boolean的包装类
public final class Boolean implements java.io.Serializable
, Comparable
// char的包装类
public final
class Character implements java.io.Serializable, Comparable
第二种,数值型包装类,继承于Number类。代码展示如下:// byte的包装类
public final class Byte extends Number implements Comparable
// short的包装类
public final class Short extends Number implements Comparable
// int的包装类
public final class Integer extends Number implements Comparable
// long的包装类
public final class Long extends Number implements Comparable
// float的包装类
public final class Float extends Number implements Comparable
// double的包装类
public final class Double extends Number implements Comparable
另外, Boolean和Character两个类就是正常的属性方法封装,但是数值型的包装类继承了一个Number类。代码展示如下:public abstract class Number implements java.io.Serializable