一 什么是装箱?什么是拆箱?


在Java中,Java对每种基本数据类型都提供了对象的包装器类型。看下表:

包装类对应表

基本数据类型 包装类
byte Byte
boolean Boolean
short Short
char Character
int Integer
long Long
float Float
double Double

在Java SE5之前,如果要生成一个数值为50的Integer对象,需要这么进行:

Integer obj = new Integer(50);

而在Java SE5开始,Java就封装了自动装箱的特性,定义数值是这样做就可以:

Integer obj = 50;

这个过程中自动根据数值创建Integer对象,就叫装箱;

简单一点说,装箱就是 自动将基本数据类型转换为包装器类型;拆箱就是 自动将包装器类型转换为基本数据类型。

那什么是拆箱?和装箱对象,就是将包装器类型转换成基本数据类型。拆装箱的过程如下图:


二 拆装箱是如何实现的?


我们以Double类型为例,先看下面的一段代码:

public class Main{public static void main(String[] args){Double DB = 10.34;double db=DB;}
}

然后我们对这段代码进行反编译,结果如下:

然后咱们换成Integer类型的再试试,直接看结果:

看出有什么相同来了没有,程序在自动装箱的时候自动调用valueof方法,在拆箱的时候,调用相应的类型的”**.**Value”方法。

由此可以看出,程序的自动装箱是调用包装器类型的valueof方法,而拆箱是调用包装器的”**.**Value”方法来实现的。

新手学JAVA(四)----装箱与拆箱相关推荐

  1. Java自动拆装箱面试_跟王老师学泛型(二):Java自动装箱与拆箱

    Java 自动装箱与拆箱(Autoboxing and unboxing) 主讲教师:王少华 QQ群:483773664 学习目标: 掌握Java 基本数据对应的包装类 掌握Java 自动装箱与拆箱 ...

  2. 【转】java 自动装箱与拆箱

    java 自动装箱与拆箱 这个是jdk1.5以后才引入的新的内容,作为秉承发表是最好的记忆,毅然决定还是用一篇博客来代替我的记忆: java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的 ...

  3. java有装箱和拆箱吗_Java中装箱和拆箱,你真的都懂么?

    在给部门做分享的时候,一位同学提问说一直没搞明白Java的装箱和拆箱,让我给讲解下,所以才有了下面这篇文章: 本次文章根据PPT分享整理而成,会有5点: 1.什么是装箱和拆箱? 2.基本数据类型和包装 ...

  4. Java 自动装箱与拆箱

    Java 自动装箱与拆箱 装箱就是自动将基本数据类型转换为包装器类型(int–>Integer):调用方法:Integer 的 valueOf(int) 方法 拆箱就是自动将包装器类型转换为基本 ...

  5. java 自动装箱自动拆箱

    1.Java数据类型 在介绍Java的自动装箱和拆箱之前,我们先来了解一下Java的基本数据类型. 在Java中,数据类型可以分为两大种,Primitive Type(基本类型)和Reference ...

  6. [转]JAVA自动装箱和拆箱

    http://www.cnblogs.com/dolphin0520/p/3780005.html 1.Java数据类型 装箱和拆箱之前,我们先来了解一下Java的基本数据类型. 在Java中,数据类 ...

  7. java的自动装箱_详解Java 自动装箱与拆箱的实现原理

    详解Java 自动装箱与拆箱的实现原理 发布于 2020-7-4| 复制链接 本篇文章主要介绍了详解Java 自动装箱与拆箱的实现原理,小妖觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小妖 ...

  8. java list装箱,Java 自动装箱和拆箱

    Java 自动装箱和拆箱 在本教程中,我们将借助示例学习Java自动装箱和拆箱. Java自动装箱-包装器对象的原始类型 在自动装箱中,Java编译器会自动将原始类型转换为其相应的包装器类对象.例如, ...

  9. Java进阶(三十七)java 自动装箱与拆箱

    java 自动装箱与拆箱是jdk1.5以后才引入的新的内容.java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装称为装箱,解包装称为拆箱): 其实按照我自己的理解自动 ...

  10. Java自动装箱与拆箱及其陷阱

    2019独角兽企业重金招聘Python工程师标准>>> 在本文中,笔者向大家介绍下Java中一个非常重要也非常有趣的特性,就是自动装箱与拆箱,并从源码中解读自动装箱与拆箱的原理,同时 ...

最新文章

  1. CSS3-transform-style
  2. 职责链模式 php,php Chain of Responsibility 职责链模式
  3. SDNU 1085.爬楼梯再加强版(矩阵快速幂)
  4. TCP/IP(一):数据链路层
  5. SASS简介及使用方法
  6. sqlserver字符串分割
  7. 4月1日起 理想ONE零售价由33.8万元上调至34.98万元
  8. cp命令显示进度条_教程 | Linux常用命令大全
  9. 洋葱细胞数字全息显微实验演示
  10. mysql 一张表连两次_MySQL查询两次和双表联查哪个效率高
  11. HANA 数据库备份还原总结
  12. echarts 简单词云制作,自定义图案词云echarts-wordcloud.js
  13. 自制RS232转485通信模块
  14. C#检查网络是否连接的方法
  15. 《富爸爸穷爸爸》第一课
  16. 【中危】Sweet32: TLS 64位分组密码生日攻击(CVE-2016-2183)
  17. 虚拟机没有USB网卡选项怎么解决
  18. centos7配置squid代理(透明代理)
  19. 如果要求在使用计算机编辑文档,计算机应用基础专作业2-文档编辑.doc
  20. 谷歌庆祝2008年北京奥运会倒计时365天LOGO

热门文章

  1. [Swift]LeetCode496. 下一个更大元素 I | Next Greater Element I
  2. grafana 安装配置
  3. 使用Core Animation对象来实现动画
  4. 邮件附件在线预览——HTML Filter
  5. adb server无法启动方法,结束占用端口的进程
  6. Python学习笔记《Python核心编程》第4章Python对象
  7. javascript随机生成GUID
  8. 基于形态学操作提取水平和垂直线条(五线谱中音符和乐谱线的分离)
  9. 一篇不错的讲DHCP的文章
  10. 配置FTP服务(一):pureftp部署和优化