Java进阶--包装类、装箱和拆箱

33 篇文章 0 订阅

包装类

  1. 包装类的作用:例如有时候一个方法需要传一个Object类型参数进去,但我们想传个int类型的数字,这时就需要用包装类将数字包装成Object类型
  2. java中为8种基本数据类型对应准备了8种包装类型,8种包装类属于引用数据类型,父类是Object
基本数据类型包装类型父类
bytejava.lang.ByteNumber
shortjava.lang.ShortNumber
intjava.lang.IntergerNumber
longjava.lang.LongNumber
floatjava.lang.FloatNumber
doublejava.lang.DoubleNumber
booleanjava.lang.BooleanObject
charjava.lang.CharacterObject

装箱和拆箱

8种包装类中有6个父类都是Number,Number是一个抽象类,无法实例化对象,Number类中有以下方法:
在这里插入图片描述
这些方法在包装类中都有,负责拆箱

//基本数据类型-->引用数据类型(装箱)
Integer i=new Integer(123);

//引用数据类型-->基本数据类型(拆箱)
float f=i.floatValue();
System.out.println(f);//123.0

int retValue=i.intValue();
System.out.println(retValue);//123

在JDK1.5之后,支持自动装箱和自动拆箱,就不需要再用Number类中的方法。

//自动装箱
//int-->Integer
Integer x=100;

//自动拆箱
//Integer-->int
int y=x;

==比较的是对象的内存地址,这个运算符不会出发自动拆箱机制,只有±*/等运算才会。java中为了提高执行效率,将[-128,127]之间所有的包装对象提前创建好,放在方法区的整数型常量池中,目的是只要用这个区间的数据不需要再new创建对象,直接从整数型常量池中取出来。

Integer a=128;
Integer b=128;
System.out.println(a==b);//false,创建两个不同的对象,地址不同

Integer c=127;
Integer d=127;
System.out.println(c==d);//true,指向的是整数型常量池中同一个对象,地址相同
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值