18-包装类

包装类

包装类的主要功能是只对于基本数据类型的对象转换而实现的,随着JDK版本的更新,包装类的功能也在随着改变,有着更多的支持。

包装类实现原理分析

Object类最大的特点是所有类的父类,并且可以接收所有的数据类型,但是在这个过程中存在问题:基本数据类型并不是一个类,所以现在如果要想将基本数据类型以类的形式处理,那么就需要对其进行包装;
装箱:将基本数据类型保存在包装类中;
拆箱:从包装类对象中获取基本数据类型;
基本数据类型进行包装处理后可以向对象一样进行引用传递,同时也可以使用Object类进行接收,但我们可以发现基本数据类型与Object类型之间的缺陷,那么JDK也发现同样的问题,
基本数据类型有8种,所以有8种包装类:

  • 对象型包装类(Object直接子类):Boolean、Character;
  • 数值型包装类(Number直接子类):Byte、Short、Integer、Long、Float、Double;

Number是一个抽象类,以后只要是看见了Number都应该明确的表示它是一个数字的概念,这个类定义的方法:

方法名称 类型 描述
public byte byteValue() 普通 从包装类中获取Byte数据
public short shortValue() 普通 从包装类中获取short数据
public abstract intValue() 普通 从包装类中获取Int数据
public abstract longValue() 普通 从包装类中获取long数据
public abstract floatValue() 普通 从包装类中获取float数据
public abstract doubleValue() 普通 从包装类中获取double数据

Number类中的方法就是直接提供有获取包装类中基本数据类型的功能,一共只定义有6种;

装箱与拆箱

基本数据类型的包装类都是为了基本数据类型转为对象提供的,这样对于基本类型与包装了之间就有了如下的操作关系

  • 数据装箱:将基本数据类型保存在包装类中,一般可以利用构造方法完成:
    • Integer类:public Integer(int value);
    • Double类:public Double(double Value);
    • Boolean类:public Boolean(Boolean value);
  • 数据拆箱:从包装类对象中获取基本数据类型:
    • 数值型包装类已经由Number类定义了拆箱的方法了;
    • Boolea型:public boolean booleanValue();

从jdk1.9之后,对于包装类之中提供的构造方法就变为了过期处理,不建议用户继续使用,这是因为从jdk1.5之后为了方便处理提供的自动的装箱与拆箱操作,这种手工的模式基本上没人用了。
除了提供有自动的数学运算支持之外,使用自动装箱最大的好处是可以实现Object接收基本数据类型的操作;
但是对于包装类,需要注意“相等判断”,以后进行包装了相等判断的时候一定要使用equals完成,而包装类本身也需要考虑占位的长度;

猜你喜欢

转载自blog.csdn.net/MARVEL_3000/article/details/111400681