【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()
java 复制代码
Integer a = Integer.valueOf(10);  // 自动装箱
int b = a.intValue();             // 自动拆箱

自动装箱与拆箱的注意点

性能影响

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

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

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

java 复制代码
Integer sum = 0;
for (int i = 0; i < 10000; i++) {
    sum += i;  // sum 是包装类型,导致多次装箱和拆箱
}
相关推荐
Rabbit_QL2 小时前
【水印添加工具】从零设计一个工程级 Python 图片水印工具:WaterMask 架构与实现
开发语言·python
张柏慈2 小时前
Java性能优化:实战技巧与案例解析
java
天“码”行空2 小时前
简化Lambda——方法引用
java·开发语言
z20348315202 小时前
C++对象布局
开发语言·c++
Beginner x_u2 小时前
如何解释JavaScript 中 this 的值?
开发语言·前端·javascript·this 指针
带刺的坐椅3 小时前
MCP 进化:让静态 Tool 进化为具备“上下文感知”的远程 Skills
java·ai·llm·agent·solon·mcp·tool-call·skills
java1234_小锋3 小时前
Java线程之间是如何通信的?
java·开发语言
张张努力变强3 小时前
C++ Date日期类的设计与实现全解析
java·开发语言·c++·算法
feifeigo1233 小时前
基于EM算法的混合Copula MATLAB实现
开发语言·算法·matlab
LYS_06184 小时前
RM赛事C型板九轴IMU解算(4)(卡尔曼滤波)
c语言·开发语言·前端·卡尔曼滤波