• 拆箱和装箱是什么?作用是什么?为什么要进行拆箱和装箱?


    1、定义:装箱是将值类型装换成引用类型的过程;拆箱就是将引用类型转换成值类型的过程;
     装箱:用于在垃圾回收堆中储存值类型。装箱是值类型到Object类型或到此类型所实现的任何接口类型的隐式转换。
     拆箱:从object类型到值类型或从接口类型到实现该接口的值类型的显示转换。
    2、在JDK1.5之前,要生成一个数值为1的Integer对象,需这样写:
    Integer i = new Integer(1);
    从JDK1.5开始就提供了自动装箱的功能,要生成一个数值为1的Integer对象,只需:
    Integer i = 1;(这个过程中会自动根据数值创建对应的 Integer对象,这就是装箱。)
    举例:
    Integer i = 1;  //装箱(定义的时候自动进行装箱)
    int j = i;   //拆箱(进行赋值或者逻辑运算时会自动进行拆箱)(将引用类型Integer的i转换成值类型int的i,然后进行赋值或者四则运算)
    3、作用是什么?为什么要进行拆箱和装箱?
    Java是一种完全面向对象的语言。因此,包括数字、字符、日期、布尔值等等在内的一切,都是对象。似乎只需要一种方式来对待这些对象就可以了。
    对于CPU来说,处理一个完整的对象,需要很多的指令,对于内存来说,又需要很多的内存。如果连整数都是对象,那么性能自然很低。
    于是创造了这样一种机制,使得这些基本类型在一般的编程中被当作非对象的简单类型处理,在另一些场合,又允许它们被视作是一个对象。
    这就是装箱和拆箱。
    作用:为了保证通用性和提高系统性能
    一种最普通的场景是调用一个包含类型为Object的参数的函数(方法),该Object可支持任意 类型,以便通用。当你需要将一个值类型传入容器时,就需要装箱了。
    另一种的用法,就是一个泛型 的容器,同样是为了保证通用,而将元素定义为Object类型的,将值类型的值加入该容器时,需要装箱。
    4、如何进行装箱和拆箱?

    如下通过反编译: int装箱的时候自动调用Integer的valueOf(int)方法;Integer拆箱的时候自动调用Integer的intValue方法。

    装箱是通过调用包装器类的 valueOf 方法实现的

    拆箱是通过调用包装器类的 xxxValue 方法实现的,xxx代表对应的基本数据类型(int,short,long,double,byte,char,float,boolean)。

  • 相关阅读:
    用于 Visual Studio 和 ASP.NET 的 Web 应用程序项目部署常见问题
    django 之知识点总结以及Form组件
    HTTP协议详细介绍
    分页和中间件
    用户认证--------------auth模块
    关于查询知识点总结
    cookie和session
    django之跨表查询及添加记录
    django之数据库表的单表查询
    django之ORM数据库操作
  • 原文地址:https://www.cnblogs.com/cdlyy/p/12512320.html
Copyright © 2020-2023  润新知