前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >新手学JAVA(四)----装箱与拆箱

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

作者头像
令仔很忙
发布2018-09-14 16:11:27
4030
发布2018-09-14 16:11:27
举报
文章被收录于专栏:令仔很忙令仔很忙令仔很忙

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


在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”方法来实现的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年04月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 什么是装箱?什么是拆箱?
    • 二 拆装箱是如何实现的?
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档