课时84:包装类实现原理分析
摘要:
1.包装类的概念
2.认识包装类
3.范例
01.包装类的概念
在 Java 开发中至关重要的概念——包装类。包装类的主要功能是实现基本数据类型的对象转换,随着 JDK 版本的更新,包装类的功能也在不断演变,提供了更多的支持。
02.认识包装类
认识包装类。Object 类最大的特点是所有类的父类,并且能够接受所有数据类型。但是在过程中面临一个问题,基本数据类型并不是一个类,若想将基本数据类型以类的形式进行处理,就需要对其进行包装。
03.范例
以 Int 数据为例,实现一个包装处理的定义。
class Int { private int data;//包装了一个基本数据类型 public Int(int data){ this.data=data ; } public int intValue(){ return this.data ; } } public class JavaDemo { public static void main(string args[]){ Object obj=new Int(10);//装箱:将基本数据类型保存在包装类之中 Int x=((int)obj).intvalue();//拆箱:从包装类对象中获取基本数据类型 System.out.println(x*2); } }
包装之后以一个对象的形式进行处理了,通过 Object 接收。将基本数据类型保存在包装类中,这一过程称为装箱。基本数据类型进行包装处理后可以像对象一样进行引用传递,同时也可以使用 Object 类来进行接收。
但是如果可以发现基本数据类型与 Object 类型之间的缺陷,那么 jdk 也早就发现了同样的问题,所以在 JDK 1.0 在早期版本提供了包装类的概念,这一概念在JDK 1.5中得到了进一步的深化。基本数据类型总共有八种,因此有相对应的八种包装类。Object 类是所有类的父类。
第一个是 Number 位,Number 位是一个抽象,因此拥有一个称为 Number 的处理类,将此位置称为抽象位。Integer 有个原始类型Int,Byte,Long,Short,Float,Double,都是 Number 的子类。
Number 在整个过程中描述的是一种数字的概念,基本数据类型实际上应该包含多种,一种叫做 Boolean,另一种是字符型Character。
现在大致能够识别出包装类中的具体形式。布尔型不可能是数字类型,这里就直接告诉布尔值就是子类。若存疑,可查阅文档以确认。
因此通过代码,应当能够明确了解当前的情况。Java 中的包装类分为两种类型:
对象型包装类(Object 直接子类):Boolean、Character
数值型包装类(Number 直接子类):Byte、Long、Short、Float、Double、Integer
其中特别强调的是 Number 类,Number 类是一个抽象类。在抽象类中通过其真正的定义发现,仅在普通类的基础上增加了抽象方法。现在将探讨Number位中具体有哪些抽象方法,请查阅相关文档进行观察。希望各位同学能够记住这些抽象方法。
已经明确列出了所有主要类型。
以后只要看到 number,就要清楚地认识到代表的是数字的概念。
No. |
方法名称 |
类型 |
|
01 |
public byte byteValue( )
|
普通 |
从包装类中获取Byte数据 |
02 |
public short shortValue( )
|
普通 |
从包装类中获取 Short 数据 |
03 |
public abstract int intValue() |
普通 |
从包装类中获取 Int 数据 |
04 |
public abstract long longValue()
|
普通 |
从包装类中获取 Long 数据 |
05 |
public abstract float floatValue()
|
普通 |
从包装类中获取 Float 数据 |
06 |
public abstract double doubleValue()
|
普通 |
从包装类中获取 Double数据 |
Number 类中的方法就是直接提供有获取包装类中基本数据类型的功能,一共只定义有六个方法。希望能清楚记住 Number 类,这将对你们有极大帮助。