加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

新手学JAVA(四)----装箱与拆箱

发布时间:2020-12-13 20:10:16 所属栏目:PHP教程 来源:网络整理
导读:1 甚么是装箱?甚么是拆箱? 在Java中,Java对每种基本数据类型都提供了对象的包装器类型。看下表: 包装类对应表 基本数据类型 包装类 byte Byte boolean Boolean short Short char Character int Integer long Long float Float double Double 在Java SE5

1 甚么是装箱?甚么是拆箱?


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

                                                                                                           包装类对应表

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


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

Integer obj = new Integer(50);

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

Integer obj = 50;

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

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

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

拆装箱



2 拆装箱是如何实现的?


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

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

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

反编译结果

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

这里写图片描述

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读