当前位置: 首页 > news >正文

【Java基础面试题011】什么是Java中的自动装箱和拆箱?

相关知识补充:《Java从入门到精通(JDK17版)》_尚硅谷电子书.pdf · Autism_Btkrsr/Blog_md_to_pdf - 码云 - 开源中国 (gitee.com)

回答重点

自动装箱:Java编译器自动将基本数据类型转换为包装类型

自动拆箱:Java编译器自动将包装类转换为基本数据类型

主要作用

  • Java5中引入,主要是为了提高代码的可读性,减少手动转换操作,简化代码编写,开发者可以更方便地在基本类型和包装类之间进行转换

常见于

  • 集合类中无法存储基本类型,如List<Integer>
  • 自动装箱和拆箱经常在算术运算中出现,尤其是包装类参与运算时

扩展知识

自动装箱与拆箱的底层实现

自动装箱和拆箱不是通过语法糖实现的,它是通过调用包装类的valueOf()和xxxValue()方法实现的

  • 自动装箱调用:Integer.valueOf(int i)
  • 自动拆箱调用:Integer.intValue()
Integer a = Integer.valueOf(10);  // 自动装箱
int b = a.intValue();             // 自动拆箱

自动装箱与拆箱的注意点

性能影响

自动装箱和拆箱虽然简化了编码,但在频繁使用的场景,可能导致性能开销,尤其是在循环中频繁发生装箱或拆箱时,容易引入不必要的对象创建和垃圾回收。

所以尽量避免在性能敏感的代码中频繁使用自动装箱和拆箱

下面这个场景,就要选择基本类型

Integer sum = 0;
for (int i = 0; i < 10000; i++) {sum += i;  // sum 是包装类型,导致多次装箱和拆箱
}
http://www.lryc.cn/news/496823.html

相关文章:

  • ERROR in [eslint] Invalid Options ‘extensions‘ has been removed.
  • 消息传递神经网络(Message Passing Neural Networks, MPNN)
  • 常用图像变换方法
  • 从被动响应到主动帮助,ProActive Agent开启人机交互新篇章
  • 力扣hot100道【贪心算法后续解题方法心得】(三)
  • 工业齐套管理虚拟现实仿真模拟软件
  • ARP表、MAC表、路由表的区别和各自作用
  • Android 使用OpenGLES + MediaPlayer 获取视频截图
  • 浏览器的事件循环机制
  • Z2400032基于Java+Mysql+SSM的校园在线点餐系统的设计与实现 代码 论文
  • k8s使用的nfs作为sc。
  • linux下Qt程序部署教程
  • tp6 合成两个pdf文件(附加pdf或者替换pdf)
  • 工作:三菱PLC防止程序存储器爆满方法
  • jmeter 获取唯一全局变量及多线程读写的问题
  • 掌握 Spring Boot 中的缓存:技术和最佳实践
  • 动手学深度学习10.5. 多头注意力-笔记练习(PyTorch)
  • 13 设计模式之外观模式(家庭影院案例)
  • 单片机学习笔记 12. 定时/计数器_定时
  • Web安全基础实践
  • Zookeeper集群数据是如何同步的?
  • SpringCloud框架学习(第六部分:Sentinel实现熔断与限流)
  • 动态规划-----路径问题
  • Rust循环引用与多线程并发
  • 东方隐侠网安瞭望台第8期
  • 底部导航栏新增功能按键
  • C++ 之弦上舞:string 类与多样字符串操作的优雅旋律
  • centos8:Could not resolve host: mirrorlist.centos.org
  • Linux 定时任务 命令解释 定时任务格式详解
  • aws(学习笔记第十五课) 如何从灾难中恢复(recover)