18-包装类

本文围绕Java包装类展开,介绍其主要功能是实现基本数据类型的对象转换。分析了包装类的实现原理,指出因基本数据类型非类,需包装处理。还阐述了装箱与拆箱操作,包括手工和自动方式,同时提醒包装类相等判断要用equals,且要考虑占位长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

包装类

包装类的主要功能是只对于基本数据类型的对象转换而实现的,随着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完成,而包装类本身也需要考虑占位的长度;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值