// 空指针风险示例Integer num =null;int value = num;// 抛出NullPointerException(自动拆箱调用num.intValue())// 缓存池验证Integer a =127;Integer b =Integer.valueOf(127);System.out.println(a == b);// true(使用缓存池对象)Integer c =128;Integer d =128;System.out.println(c == d);// false(超出默认缓存范围)
// 推荐使用valueOf()而非构造函数Integer a =Integer.valueOf(100);// 优先使用缓存Integer b =newInteger(100);// 强制新建对象(内存浪费)
五、设计思想与最佳实践
包装类型陷阱规避:
空指针防护:自动拆箱前判空(如Optional<Integer>)。
数值比较:使用equals()而非==比较对象内容。
字符串操作优化:
预分配容量:已知大小时初始化StringBuilder容量。
线程安全选择:多线程环境优先用StringBuffer。
集合性能调优:
预分配ArrayList容量:减少扩容次数(如new ArrayList<>(1000))。
基本类型优化:使用IntArrayList(第三方库)避免装箱开销。
// 最佳实践示例// 1. 字符串拼接优化StringBuilder sb =newStringBuilder(1024);
sb.append("SELECT * FROM users WHERE id IN (").append(ids).append(")");// 2. 缓存池扩展(启动参数)// java -XX:AutoBoxCacheMax=2000 MyApp