2019.4.10_基本类型与包装类2---装箱与拆箱

在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更加轻松便利了。

1、那什么是装箱和拆箱呢?我们分别来看下

装箱:把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱

拆箱:和装箱相反,把包装类对象转换成基本类型的值,又可分为手动拆箱和自动拆箱

2、为什要需要有包装类型

 包装类型将基本类型的值包装在对象中,这样就可以使用对象的方法操作基本类型,类型之间的转换需要使用包装类型的方法才能完成,因此需要有包装类型。

使用包装类的parseXXX方法还可以实现不同类型之间的转换,如将数字字符串转换为int类型:

        int i = Integer.parseInt("23");

 

public class SimpleTest {
    public static void main(String[] args) {
        Integer i1 = 100;
        Integer i2 = 100;
        Integer i3 = 200;
        Integer i4 = 200;
 
        System.out.println(i1==i2);  //①true
        System.out.println(i3==i4);  //②false
    }
}

  ①处结果为true,②处为false,原因是什么呢?(我的jdk是1.8版本的)

   Integer i1 = 100;执行的操作是100先通过valueOf()方法进行装箱操作,Integer.valueOf()的源码如下:

public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

 Integer比较特殊,在-128到127之间,会走缓存,不在这个区间的数会走new Integer(i),也就是会创建新的对象,因此,100比较的时候是true,200比较的时候是false

基本类型和包装类之间经常需要互相转换,以 Double为例(其他几个包装类的操作雷同哦):

public class HelloWorld {
    public static void main(String[] args) {
        
        // 定义double类型变量
		double a = 91.5;
        
         // 手动装箱
		Double b =new Double(a);       
        
        // 自动装箱
		Double c = a;      

        System.out.println("装箱后的结果为:" + b + "和" + c);
        
        // 定义一个Double包装类对象,值为8
		Double d = new Double(87.0);
        
        // 手动拆箱
		double e =d.doubleValue();
        
        // 自动拆箱
		double f = d;
        
         System.out.println("拆箱后的结果为:" + e + "和" + f);
	}
}

运行成功

装箱后的结果为:91.5和91.5
拆箱后的结果为:87.0和87.0

 

  1. 装箱是把基本类型封装成包装类的过程,但是要注意两者的对应关系,不对应不能叫做装箱,比如说牛奶装进牛奶盒,不能装进罐头里。

  2. 这种说法不太严格,拆箱是一种对应的转换,比如Integer转为int,Double转为double。转换成基本数据类型可以调用包装类的函数来进行相应的转换。

  3. 包装类是java.lang包里的类,装箱是基本类型转换成包装类的一种操作,分为自动装箱和手动装箱。

相关连接:https://blog.csdn.net/durenniu/article/details/81051402

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值