Java中的自动装箱(AutoBoxing)和拆箱(UnBoxing)

本文介绍了Java中的自动装箱和拆箱概念,解释了它们为解决将基本数据类型转换为对象的问题而引入。内容包括装箱和拆箱的原理,以Integer为例详细分析了装箱时调用valueOf方法,拆箱时调用intValue方法的过程,并探讨了IntegerCache对int数据类型自动装箱的影响,以及Integer i = new Integer(xxx)与Integer i = xxx的区别。
摘要由CSDN通过智能技术生成

目录大纲

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

装箱: 将基本数据类型用它们对应的包装类型包装起来;
拆箱:将包装类型转换为基本数据类型;

  Integer x = 66; //自动装箱
  int y = x;// 自动拆箱

Java 为每种基本数据类型都提供了对应的引用类型,在Java SE5开始就提供了自动装箱和自动拆箱的特性

基本数据类型 包装类型
int (4字节) Interger
byte(1字节) Byte
short(2字节) Short
long(8字节) Long
float(4字节) Float
double(8字节) Double
char(2字节) Character
boolean(取决于JVM) Boolean

二、解决了啥问题?

在Java环境中,基本数据类型不是对像,也就不可能是Object的子类,为了达成万物皆Object的大圆满,自然就出现了装箱和拆箱,将基本数据类型包装成一个具有对应包装类型的属性的对象,从而获得更多功能。如:
在这里插入图片描述

三、自动拆箱和自动装箱的原理

以Integer为例我们分析一下以下代码:

package cn.codeowl.test.lang.Integer;

public class Test {
   

    public static void main(String[] args) {
   
        Integer x = 66; //自动装箱
        int y = x;//自动拆箱
    }
}

用命令 javap -c Test反编译class文件得到以下内容

Compiled from "Test.java"
public class cn.codeowl.test.lang.Integer.Test {
   
  public cn.codeowl
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值