自动装箱VS自定拆箱

引言:

在Java中,自动装箱(Autoboxing)和自动拆箱(Autounboxing)是Java 5引入的一项特性,用于在基本数据类型和它们的包装类(wrapper classes)之间进行自动转换。这允许程序员在编写代码时更自然地处理基本数据类型和对象类型,而不需要显式地创建包装类的实例或进行类型转换。

1.自动装箱(Autoboxing)

自动装箱是指将基本数据类型自动转换为对应的包装类实例。例如,当你将一个int值赋给一个Integer对象时,Java会自动将int值装箱为Integer对象。

Integer i = 10; // 自动装箱,相当于 Integer i = Integer.valueOf(10);

 

在上面的代码中,虽然我们将一个基本类型int的值(即10)赋给了一个Integer对象i,但Java编译器会自动进行装箱操作,调用Integer.valueOf(int)方法来创建一个Integer对象。

2.自动拆箱(Autounboxing)

自动拆箱是指将包装类实例自动转换为对应的基本数据类型。例如,当你从一个Integer对象中获取int值时,Java会自动拆箱。


	Integer i = 10; 

	int j = i; // 自动拆箱,相当于 int j = i.intValue();

在上面的代码中,我们从一个Integer对象i中获取了一个int值,并将其赋给了基本类型变量j。Java编译器会自动进行拆箱操作,调用Integer对象的intValue()方法来获取int值。

注意事项

  1. 空指针异常:由于自动拆箱涉及到对包装类实例的调用,如果包装类实例为null,那么在自动拆箱时将会抛出NullPointerException。
    Integer i = null; 
    int j = i; // 抛出 NullPointerException,因为i是null

  2. 性能:虽然自动装箱和拆箱使得代码更加简洁,但它们并不是无代价的。包装类和基本数据类型之间的转换需要额外的内存分配和垃圾回收开销。因此,在性能敏感的代码中,应尽量避免不必要的自动装箱和拆箱操作。
  3. 缓存:对于Byte、Short、Integer、Long、Character、Boolean和Float(不包括Double和Void)这些包装类,Java提供了缓存机制来存储一些常用值(通常是-128到127之间的Byte、Short和Integer值,以及Boolean的true和false)。当自动装箱这些范围内的值时,Java会返回缓存中的对象,而不是创建新的对象。这有助于提高性能和减少内存使用。但是,超出这个范围的自动装箱操作仍然会创建新的对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/591500.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

牛客热题:两个链表的第一个公共节点

📟作者主页:慢热的陕西人 🌴专栏链接:力扣刷题日记 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 文章目录 牛客热题:两个链表的第一个公共节点题目链…

目标检测算法YOLOv5简介

没有关于YOLOv5的直接论文,YOLOv5由Ultralytics维护,源码见:https://github.com/ultralytics/yolov5 ,于2020年6月发布v1.0版本,最新发布版本为v7.0,License为AGPL-3.0. 以下内容主要来自: 1. U…

STM32的TIM输入捕获和PWMI详解

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. IC输入捕获 2. 频率测量 3. 主模式、从模式、触发源选择 4. 输入捕获基本结构 5. PWMI模式 6. 代码示例 6.1 PWM.c 6.2 PWM.h 6.3 IC.c 6.4 IC.h 6.5 完整工程文件 输出比较可以看下面这篇…

ORAN C平面优化

使用section扩展6的C平面优化 在时域和频域中,都可以使用section扩展6进行非连续PRB分配。Section扩展6有两个位掩码:symbolMask和rbgMask。使用symbolMask可以选择一个slot内任意的symbol子集。使用rbgMask可以选择startPrbc和(startPrbc …

Android版本依赖Version catalog

曾经我们使用config.gradle文件进行版本依赖配置,然后在project的build.gradle.kts中使用如下方式引入: apply(from "./config.gradle") 缺点:在project的module中引用无任何提示,无法跳转到指定引用 一、创建versio…

Go-变量

可以理解为一个昵称 以后这个昵称就代指这些信息 var sg string "czy" 声明赋值 package mainimport "fmt"func main() {var sg string "陈政洋"fmt.Println(sg)var age int 73fmt.Println(age)var flag bool truefmt.Println(flag) } …

服务网关GateWay原理

文章目录 自动装配核心类GatewayAutoConfigurationDispatcherHandler请求处理阶段apply方法httpHandler#handle方法WebHandler#handle方法DispatchHanlder#handle方法第一步 getHandler获取请求映射第二步 invokeHandler 请求适配第三步 handleResult请求处理总结 上一篇博文我…

【刷题篇】回溯算法floodfill(七)

文章目录 1、太平洋大西洋水流问题2、扫雷游戏3、衣橱整理 1、太平洋大西洋水流问题 有一个 m n 的矩形岛屿,与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界,而 “大西洋” 处于大陆的右边界和下边界。 这个岛被分割成一个由若干方形…

Python 全栈体系【四阶】(三十九)

第五章 深度学习 八、目标检测 3. 目标检测模型 3.2 YOLO 系列 3.2.4 YOLOv4(2020 年 4 月) YOLOv4 将最近几年 CV 界大量的研究成果集中在一套模型中,从检测速度、精度、定位准确率上有了明显改善(相对于 YOLOv3&#xff0c…

基于Springboot的家具网站

基于SpringbootVue的家具网站设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 商家 家具信息 家居资讯 后台管理 后台首页 用户管理 商家管理 家具类型管理 家具…

ASV1000视频监控平台:通过SDK接入海康网络摄像机IPC

目录 一、为何要通过SDK接入海康网络摄像机 (一)海康网络摄像机的SDK的功能 1、视频采集和显示 2、视频存储 3、视频回放 4、报警事件处理 5、PTZ控制 6、自定义设置 7、扩展功能 (二)通过SDK接入的好处(相对…

JavaEE初阶-多线程易忘点总结

文章目录 1.PCBPID文件描述符表内存指针状态上下文优先级记账信息tgid 2.线程与进程的区别3.sleep和interrupt方法的关系变量终止线程interrupt方法终止线程 4.线程状态5.出现线程不安全的原因线程在系统中是随即调度,抢占式执行的。多个线程修改同一个变量线程针对…

Adobe 更新 Firefly Image 3 图像生成模型

一个工具或者模型,对于初次使用的人来说,易用性和超出预期的效果很能吸引使用者,suno和mj在这方面我感觉确实不错,第一次使用感觉很惊艳。 Adobe 更新 Firefly Image 3 图像生成模型,我用了mj的提示词,最后…

列转行(spark 与presto语法)

一、Presto 语法 原始数据: 期望数据: 代码: SELECT info, value FROM ( select 张三 as name,18 as age,男 as gender,清华 as schoolunion allselect 李四 as name,18 as age,男 as gender,清华 as school ) as a CROSS JOIN UNNEST(…

关于YOLO8学习(六)安卓部署ncnn模型--图片检测

前文 关于YOLO8学习(一)环境搭建,官方检测模型部署到手机 关于YOLO8学习(二)数据集收集,处理 关于YOLO8学习(三)训练自定义的数据集 关于YOLO8学习(四)模型转换为ncnn 关于YOLO8学习(五)安卓部署ncnn模型–视频检测 简介 前文第五章,讲述了部署自定义模型后,进…

Java--方法的使用

1.1什么是方法 方法顾名思义就是解决问题的办法,在程序员写代码的时候,会遇到很多逻辑结构一样,解决相同问题时,每次都写一样的代码,这会使代码看起来比较绒余,代码量也比较多,为了解决这个问题…

分拣机器人也卷的飞起来了

导语 大家好,我是智能仓储物流技术研习社的社长,老K。专注分享智能仓储物流技术、智能制造等内容。 新书《智能物流系统构成与技术实践》 智能制造-话题精读 1、西门子、ABB、汇川:2024中国工业数字化自动化50强 2、完整拆解:智能…

foobar2000 for Mac:卓越音乐播放器

当您在寻找一款音质卓越、功能丰富的音频播放器时,foobar2000 for Mac无疑是您的首选。它拥有简洁明了的界面设计,易于上手,同时支持多种音频格式,让您无需担心兼容性问题。 foobar2000 for Mac v2.6.4免激活版下载 foobar2000 fo…

匹配网络(Matching Networks)和原型网络(Prototypical Networks):区别详解

匹配网络(Matching Networks)和原型网络(Prototypical Networks) 匹配网络与原型网络:区别详解匹配网络(Matching Networks)核心特点:应用场景: 原型网络(Pro…

威尔科克森秩和检验 (Wilcoxon rank-sum test)-- 代码实现

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟 🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号&#xf…
最新文章