Java中应按场景选择:需高性能计算时用基本类型,需对象语义(null、泛型、方法调用)时用包装类;注意装箱拆箱陷阱、==比较风险及默认值差异。

需要数值计算或高频操作时,优先用基本类型
比如循环累加、数组遍历、数学运算、方法内部临时变量等场景。基本类型直接存值,无对象创建开销,栈上分配快,GC 压力小。
- 用 int 而不是 Integer 做循环计数器或中间计算变量
- 用 int[] 存大量整数,比 List<Integer> 内存节省 3–5 倍(避免每个元素额外 12–16 字节对象头)
- 避免在 for-each 循环中对包装类集合反复拆箱:
for (Integer x : list) { sum += x; }会隐式调用x.intValue(),高频下损耗明显
必须用对象语义时,才选包装类型
当代码需要面向对象能力、null 表达、泛型支持或集合存储时,包装类不可替代。
-
泛型容器必须用包装类:如
List<Integer>、Map<String, Boolean>—— 基本类型不能作为泛型实参 -
需要表示“缺失/未定义”状态:例如数据库字段可能为 NULL,用
Integer age可区分“0岁”和“年龄未知”,而int age默认是 0,语义模糊 -
要调用对象方法:如
Integer.toString()、Double.parseDouble()、Integer.max(a, b)等工具方法
装箱与拆箱要小心,尤其涉及 null 和比较
自动装箱/拆箱是语法糖,但容易埋下空指针和逻辑错误。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
避免用 == 比较包装类:
Integer a = 128, b = 128; System.out.println(a == b); // false(超出 -128~127 缓存范围,各自 new 对象);应统一用equals()或先判空再用intValue() -
拆箱前务必检查 null:如
Integer score = null; int s = score; // 抛 NullPointerException -
手动装箱推荐 valueOf(),不用 new:用
Integer.valueOf(100)能复用缓存对象;new Integer(100)总是新建,已废弃
内存与默认值差异影响设计决策
成员变量的默认行为不同,直接影响初始化逻辑和业务含义。
立即学习“Java免费学习笔记(深入)”;
- 类字段声明为
int count→ 默认值是0,无法区分“初始值”和“业务上就是 0” - 声明为
Integer count→ 默认值是null,可明确表达“尚未赋值” - 局部变量无默认值,但基本类型必须显式初始化;包装类局部变量若不赋值就使用,编译报错(未初始化),而引用类型虽默认 null,但访问会 NPE

















