Java 入门:装箱与拆箱

【Java基础知识 5】装箱和拆箱 一、什么是装箱?什么是拆箱? 在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行: Integer i = new Integer(10); 而在从Java SE5开始就提供了自动装箱的特性,如果要生成一个数值为10的Integer对象,只需要这样就可以了: Integer i = 10; 这个过程中会自动根据数值创建对应的 Integer对象,这就... 阅读详情

引言

在这篇文章中,我们将使用一些示例,来学习 Java 中的装箱与拆箱操作。原始数据类型的处理是不同的,因此引入了包装类,其中有两个组件起着作用,即自动装箱和解箱。

为何需要原始类型与包装类?

Java 是基于面向对象设计的,因此,每创建一次包装类型就会放到堆里,然后通过栈中的地址来找寻堆中的对象。那么像经常使用的 int、double、float 等基础类型,每次都创建为对象会变的效率低下。因此就出现了基本类型,直接将变量值存在栈中。但是基本类型不具有对象性质,当我们使用集合的时候,又可以使用其包装类型。当然,我们每次使用的时候,例如往集合中添加基本类型,Java 会自动装箱为包装类,后面的示例也会演示到。

Java 装箱 - 原始类型到包装类对象

所谓装箱,就是 Java 编译器会自动将原始类型转换为其相应的包装类对象。
示例:

int a = 10;
// 装箱操作
Integer b = a;

在使用Java集合时,装箱有很大的优势。

示例 1: 使用 Java 集合时的装箱操作

import java.util.ArrayList;

public class AutoBoxing {
    public static void main(String[] args) {

        ArrayList<Integer> list = new ArrayList<>(4);

        // 装箱
        list.add(2022);
        list.add(82);

        System.out.println("list=> " + list);
    }
}

输出:

list=> [2022, 82]

在上述的示例中,我们创建了一个基于 Integer 类型的集合。因此,集合列表只能容纳 Integer 类型的对象。
注意这一行:

list.add(2022);

这里,我们显然正在传递原始类型的值。然由于自动装箱,原始值被自动转换为整数对象并存储在数组列表中。

Java 拆箱 - 包装类对象到原始类型

在拆箱中,Java编译器会自动将包装类对象转换为其相应的原始类型。
示例:

// 装箱
Integer b = 56;

// 拆箱
int a = b;

和自动装箱一样,拆箱也可以用在Java集合中。

示例 2:Java 集合取值拆箱

import java.util.ArrayList;

public class AutoBoxing {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>(4);
        // 装箱
        list.add(2022);
        list.add(82);
        System.out.println("list=> " + list);
        // 拆箱
        int c = list.get(0);
        System.out.println("c val: " + c);
    }
}

输出:

list=> [2022, 82]
c val: 2022

在上面的例子中,请注意这一行:

int c = list.get(0);

在这里,get()方法返回索引为 0 的对象。 然而,由于自动拆箱,该对象被自动转换为原始类型 int 并分配给变量c。

JAVA装箱拆箱(很详细、易于理解) 很详细的介绍了java装箱拆箱的相关知识,用例子来讲述,易于理解! 立即下载

相关推荐

Python主要智能优化算法库汇总

最近几年简单浏览和对比了一些智能算法的库。现将各种库的主要信息、相关优缺点简单整理如下,各位同学可根据自己的需求和喜好进行选择。 文章目录1、DEAP2、mealpy3、scikit-opt (国产良心)4、Geat2(国产用心)5、pygmo26、pyswarms7、SciPy(想不到吧)小结 1、DEAP 项目地址:https://github.com/DEAP/deap 安装: pip install deap 优点: 起点高,发表在Journal of Machine Learning Rese

半个冯博士 2万+

Java基础之拆箱和装箱

Java基础之拆箱和装箱 一、什么是拆箱和装箱 1)什么是拆箱 • 拆箱就是自动将包装器类型转换为基本数据类型 • 拆箱调用Integer.intValue方法 2)什么是装箱 • 装箱就是自动将基本数据类型转换为包装器类型 • 装箱调用的Integer.valueOf方法 二、什么是自动装箱 1.基本数据转型转包装器类型,自动装箱 2.包装器类型转基本数据类型,自动拆箱 3.基本数据类型,在初始化值时,在缓存值范围之外自动装箱 4.包装器类型,在初始化值时,在缓存值范围之内自动拆箱 5.分配新内存地址:装

你与昨日 8426

MATPOWER的安装详细教程

MATPOWER的安装包实际为一个程序包,安装教程很简单,详见本文。

半个月亮Zz的博客 3万+

JAVA小知识13:浅谈拆箱与装箱

如果你是一个初学者,你肯定会经常听到大佬说什么拆箱会有什么空指针异常啊之类的术语,今天就来说说什么叫拆箱和装箱。

jialuosi的博客 1607

Excel炒股党必备:手把手教你用Power Query免费获取并刷新股票历史数据

本文详细介绍了如何利用Excel中的Power Query工具免费获取并自动刷新股票历史数据,特别适合Excel炒股党。从环境配置、数据源选择到实战操作,手把手教你建立智能数据管道,实现高效投资分析。通过参数化股票代码和定时刷新功能,大幅提升数据更新效率。

weixin_26767391的博客 654

QGis二次开发 —— 1、win10/win11搭建Vs2017-QGis3.40.12环境(附Vs2017环境效果,附全部问题解决方法)(附:Qt助手加入QGis接口说明文档)

QGis二次开发 —— 1、Windows10搭建Vs2017-QGis环境(附Vs2017环境效果)(附:Qt助手加入QGisA接口说明文档)

1362

java知识点---装箱拆箱

在Java中,和是指基本数据类型(也称为值类型)与它们对应的包装器类(引用类型)之间相互转换的过程。

u011489056的专栏 2170

uniapp [全端兼容] - 实现接入集成高德地图搜索地址及选择位置功能,搜索框检索选择地点并返回经纬度及详细省市区县街道地址,用户搜索历史及清空历史记录,选择地址自动获取周边位置列表/地图移动选点

uni-app,高德地图,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,Uniapp高德地图,在地图上选择或搜索指定地点,打开地图选择位置,关联地址搜索,输入地址返回附近地址列表,uniApp高德地图地址搜索,搜索框历史记录,关键字搜索,周边查询,搜索位置,uniapp对接高德实现搜索出现地址以及保存搜索记录,集成高德地图,实现精准位置选点功能,获取当前定位城市,如何实现搜索功能,获取省份城市区街道详细地址经纬度,移动选点标记位置,在地图上进行选择位置选点、搜索

🏆 前端领域优质创作者 1万+

Java 自动装箱与拆箱详解

本文介绍了Java 5引入的自动装箱(Autoboxing)和拆箱(Unboxing)机制简化了基本数据类型与包装类之间的转换。自动装箱通过valueOf()方法将基本类型转为包装类对象,自动拆箱则通过xxxValue()方法逆向转换。

土豆丝的博客 1572

OpenHarmony之Histreamer引擎深度解析:pipeline_core架构如何全面取代GStreamer,一统音视频播放与录制

Histreamer是OpenHarmony多媒体框架的核心媒体引擎,采用架构设计。一个轻量级的媒体引擎组件,提供播放、录制等场景的媒体数据流水线处理。1.播放场景分为如下几个节点:数据源读取、解封装、解码、输出;2.录制场景分为如下几个节点:数据源读取、编码、封装、输出。该引擎从OH5.0开始取代了原有的媒体引擎gstreamer(部分文档还保留较老架构的讲解),提供统一的音视频播放、录制、元数据解析等能力。

m0_67505153的博客 332

添加USB wifi驱动到RK3568

在日常开发中我们经常需要用到wifi功能,一般来说soc厂家都会事先做好了几个厂家的wifi驱动在内核源码目录下,我们只需要按原理图配置对应的设备树即可。常用的wifi的接口有:USBSDIOPCIE下面来介绍这这种接口是如何使用wifi芯片。提示:以下是本篇文章正文内容,下面案例可供参考本小节介绍了一个配置一个USBwifi驱动的整个流程,并没有介绍到SDIO,下小节基于AP6256介绍如何使用。

qq_24093081的博客 2049

Java从入门到精通16==》包装类概念、装箱与拆箱

包装类概念及其成员、装箱与拆箱

Novice_anan的博客 138

华为OD机试双机位C卷-分披萨 (Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【分披萨】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为od机试 - 分披萨。

qq_45776114的博客 1396

什么是自动装箱和拆箱?

实话说,刚刚学Java时听到这两个词觉得很高大上,给人一种深奥的感觉,学完之后才知道 装箱:指将基本数据类型用它们对应的引用类型包装起来。 拆箱:指将包装类型还原为基本数据类型。 自动装箱和拆箱就是这个,也不难理解。 ...

小缘同学的博客 654

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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

在本文中,笔者向大家介绍下Java中一个非常重要也非常有趣的特性,就是自动装箱与拆箱,并从源码中解读自动装箱与拆箱的原理,同时这种特性也留有一个陷阱。开发者如果不注意,就会很容易跌入这个陷阱。 自动装箱(Autoboxing) 定义           大家在平时编写Java程序时,都常常以以下方式来定义一个Integer对象: Integer i=100;

JairusChan的技术博客 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java中的拆箱和装箱机制

一.装箱拆箱的定义 众所周知,Java中有8大基本数据类型,其为每种基本数据类型都提供了对应的包装器类型。 下表是基本数据类型对应的包装器类型: 在Java SE5之前,如果要生成一个数值为5的Integer对象,必须这样进行: Integer i = new Integer(5); 而从Java SE5开始就提供了自动装箱的特性,如果要生成一个数值为5的Integer对象,只需要这样就可以了...

小白不菜的博客 3991

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java之自动装箱与拆箱

一文告诉你什么是自动装箱与拆箱

小黑的博客 5771

Java中的装箱与拆箱

原文:http://www.cnblogs.com/dolphin0520/p/3780005.html。今天我们学习了Java中的装箱与拆箱机制,包括它们的定义、底层实现,以及常见的面试题。当我们把一个包装器类型的对象转回基本数据类型时,这就是。🎯 接下来,让我们深入一点,看一看装箱与拆箱在底层是如何运作的。🚀 大家好,今天我们要探讨一个在Java中非常重要的知识点—— 现在,让我们来练习一些装箱与拆箱相关的经典面试题。但是从Java SE5开始,Java引入了。的过程是:Java自动将基本数据类型。

yaoxin521123的博客 1773

java当中的拆箱与装箱

装箱:是指自动将基本数据类型转换为对应的包装类对象的过程。拆箱:是指自动将包装类对象转换为对应的基本数据类型的过程。

m0_75054336的博客 1824

【JAVA】谈谈拆箱与装箱

谈谈装箱与拆箱 一、何为包装类型 Java是一种面向对象的语言,但是它不是纯面向对象的。Java中存在基本数据类型,谈不上对象。为了向纯面向对象靠拢,Java5的时候推出了基本数据类型的包装类型。 基本数据类型与包装类型的对应关系如下: 二、何为装箱与拆箱 装箱就是将基本数据类型转化为包装类型,那么...

阳阳的博客 1万+

Java中的装箱和拆箱

我们知道 Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料。在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行:1new而在从Java SE5开始就提供了自动装箱的特性,如果要生成一个数值为10的Integer对象,只需要这样就可以了:1;这个过程中会自动根据数值创建对应的 Integer对象,这就是装箱。那什么是拆箱呢?

omygodvv的博客 1123

Java装箱与拆箱原理

装箱(将基本类型转为包装类)和拆箱(包装类转基本类型)是Java重要的语法糖机制。其中,编译器通过valueOf()和intValue()等方法实现转换;Integer等包装类对常用值(-128~127)进行缓存优化。在集合操作、方法参数传递等场景中需特别注意自动装箱,但性能敏感场景应优先使用基本类型以避免额外开销。常见陷阱包括空指针异常、比较误区(==与equals区别)和循环中的性能损耗。该机制的核心意义在于兼容泛型系统、支持null值表达,并实反射与框架的动态集成,同时通过缓存优化平衡性能。

weixin_74120671的博客 1263

Java自动拆箱和装箱

什么是自动拆箱和装箱定义 自动装箱就是 Java 自动将原始数据类型转为对应的包装类对象 比如将 int 型的变量转成 Integer对象 自动拆箱反之(从 Java 1.5 开始引入) 过程 自动装箱时,编译器调用 valueOf() 将原始数据类型值转为对象;同时自动拆箱时,编译器调用类似 intValue(), doubleValue() 这类方法将对象转换成原始类型值 基本类型 大小

戎码人生 1万+

Java的包装类以及装箱、拆箱

前言 Java的包装类对应的是Java的基本数据类型,比如Integer对应int,因此先来回顾一下基本数据类型。 Java的基本数据类型 四种整数类型(byte、short、int、long): byte:8 位,用于表示最小数据单位,如文件中数据,-128~127 short:16 位,很少用,-32768 ~ 32767 int:32 位、最常用,-231-1~231 (21 亿) long:64 位、次常用 两种浮点数类型(float、double): float:32 位,后缀 F 或 f,1

FiveStarsGeneral的博客 3634

java中自动装箱与拆箱

尽管如此,在使用这些特性时,需要注意可能的性能开销、对象比较中的陷阱以及空指针异常的风险。在Java 5之前,开发者必须手动将基本数据类型转换为包装类对象才能存储在集合中,代码显得繁琐。每种基本数据类型都有对应的包装类,它们是Java提供的引用类型,存储在堆内存中。每次装箱操作都会创建一个新的对象,频繁的装箱和拆箱可能会导致不必要的内存分配和垃圾回收。当包装类对象需要转换为基本数据类型时,Java会调用对应包装类的实例方法,如。包装类对象的比较操作可能会导致意想不到的结果,因为包装类的对象比较(使用。

Flying_Fish_roe的博客 1194
上一篇: JAVA中的属性、方法、构造器,你真的弄懂了吗?
下一篇: 【Spring】从面向对象再到面向切面
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值