基本数据类型和包装类的区别?
- 默认值
- 初始化
- 存储方式
基本数据类型 | 包装类 | 备注 | |
本质 | 数据本身,不是对象 | 对象,是基本类型的包装 | 之间可以通过自动拆箱、装箱互相转换。 |
存储 | 栈(局部变量)或堆(成员变量) | 堆(对象实例), | JIT栈上分配优化: |
默认值 |
|
| 如果对 |
初始化 | 直接赋值 |
| 推荐使用 |
性能 | 无额外开销 | 有对象创建和GC开销 | 循环、高性能计算中优先使用基本类型 |
应用场景 | 局部变量、成员字段、计算 | 集合、泛型、需要null语义的场景、反射API | 集合类如 |
比较操作 |
|
| 永远使用 |
缓存机制 | 不涉及 |
|
自动拆箱和装箱的原理与作用-CSDN博客
- 性能开销
- NPE风险
- 包装类缓存机制
- 比较包装类用equals()