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)。

JAVA中的装箱与拆箱相关推荐

  1. Java中的装箱和拆箱剖析

    Java中的装箱和拆箱剖析 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下乐橙谷公会面试笔试中经常遇到的 ...

  2. java中的拆箱和装箱是指什么_一文带你理解Java中自动装箱和拆箱

    Java中自动装箱和拆箱 装箱(Boxing),也称为包装(Wrapper),是在对象中放置原语类型(primitive type)的过程,以便原语(primitive)可以作为引用对象使用. 这里的 ...

  3. 一文带你理解Java中自动装箱和拆箱

    Java中自动装箱和拆箱 装箱(Boxing),也称为包装(Wrapper),是在对象中放置原语类型(primitive type)的过程,以便原语(primitive)可以作为引用对象使用. 这里的 ...

  4. Java中的装箱和拆箱—这一篇全了解

    Java中的拆箱装箱-这一篇全了解 一.什么是装箱?什么是拆箱? Java为每种基本数据类型都提供了对应的包装器类型,让基本类型具备对象的特征,实现更多的功能..在Java SE5之前,如果要生成一个 ...

  5. java基础提升篇:深入剖析Java中的装箱和拆箱

    一.什么是装箱?什么是拆箱? 我们知道 Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料.在Java SE5 ...

  6. java中的装箱及拆箱

    java中存在8中基本的数据类型,每一种数据类型都有包装类型. 包装类型:每一个基本的数据类型都会------对应一个包装类型. boolean------------------>Boolea ...

  7. java避免装箱_深入剖析Java中的装箱和拆箱

    一.什么是装箱?什么是拆箱? Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料.在Java SE5之前,如果 ...

  8. java装箱与拆箱原理_深入理解Java中的装箱和拆箱

    前言 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱.拆箱相关的问题. 若有不 ...

  9. java中的装箱和拆箱详解

    什么是装箱和拆箱 装箱就是自动将基本数据类型转换为包装器类型. 拆箱就是自动将包装器类型转换为基本数据类型. 装箱和拆箱的原理 自动装箱都是通过包装类的 valueOf() 方法来实现的.自动拆箱都是 ...

最新文章

  1. as [Frame]元标签
  2. Linux怎么让文件按大小排序,linuxsortlinux系统下,按文件的大小进行排序的命令...
  3. [导入]DotNet软件开发框架
  4. python multiprocessing 进程间如何共享数据、对象
  5. 让 步( 写的太好了!)
  6. 逼自己学python后,我成了同事眼中的大神
  7. codeforces 792CDivide by Three(两种方法:模拟、动态规划
  8. python网络编程第三版网盘_Python网络编程(socketserver、TFTP云盘、HTTPServer服务器模型)...
  9. java 本地文件上传到服务器,java本地文件上传到远程服务器
  10. 大数据、数据分析、数据挖掘的差别
  11. linux系统中source什么意思,Linux中source是什么指令?
  12. Hybrid App 开发快速指南
  13. linux aufs,UnionFS有什么用?AUFS的一些特性
  14. 计算机专业刊头,如何自己动手做电子报纸?
  15. python输出文本框_python如何使用文本框
  16. c语言-选手评分系统
  17. Yuma格式历书的总结
  18. Java实现课程推荐算法
  19. Git 代码版本管理工具详解 进厂必备
  20. 车站广播系统采用计算机,广播系统在轨道交通中的应用

热门文章

  1. 聚观早报 | 国美回应拖欠员工工资;苹果开始在印度生产iPhone 14
  2. 为什么发电子工资条显示“未匹配实发金额列”?
  3. Jackson丨艾美捷Jackson多重标记可同时检测多个目标
  4. Unity3D开发之Error while reading movie Bug解决
  5. 导入excel表格,保存到临时表
  6. 为数字化深水区“量身定制”,华为品质服务再迭代
  7. fabricJs中给canvas添加跨域背景图片报错Tainted canvases may not be exported
  8. C语言:哈夫曼树构造及编码(核心代码每一行都有注释)
  9. pytest框架之模块的基础函数应用:setup_module,teardown_module,setup_function,teardown_function
  10. 姓名评分程序PHP,php测试姓名缘分指数