1.包装类及方法


2.底层实现

3.自动装箱和拆箱

4.总结

5.Integer成员方法


String line = sc.nextLine();

6.缓存机制-享元模式
- 有缓存的包装类:
Byte、Short、Integer、Long、Character、Boolean(6 个); - 无缓存的包装类:
Float、Double(2 个,浮点型无固定高频范围,缓存无意义); - 核心用法:必须用
valueOf()方法才能触发缓存(new 构造方法会强制创建新对象,不触发缓存)。
| 包装类 | 缓存范围(默认) | 特殊说明 |
|---|---|---|
| Boolean | TRUE、FALSE 两个静态对象 |
无范围,直接缓存唯一的两个值 |
| Byte | -128 ~ 127(覆盖所有可能值) |
Byte 取值范围本身就是 -128~127,全量缓存 |
| Short | -128 ~ 127 |
固定范围,不可扩展 |
| Integer | -128 ~ 127 |
可通过 JVM 参数 java.lang.Integer.IntegerCache.high=N 扩大上限(如设为 500) |
| Long | -128 ~ 127 |
固定范围,不可扩展 |
| Character | '\u0000' ~ '\u007F'(0~127) |
对应 ASCII 码字符,高频使用场景多 |
| Float | 无缓存 | 浮点型数值离散,无固定高频范围 |
| Double | 无缓存 | 同上,缓存收益远小于成本 |
7.性能注意事项
避免不必要的装箱拆箱:循环中使用包装类会有性能开销
缓存范围:了解各包装类的缓存范围,合理使用valueOf()
空指针:包装类可能为null,拆箱时要判空
比较使用equals:==比较的是对象引用而非值