Java集合框架探索
1. 自动装箱与拆箱的注意事项
在Java中, java.lang.Byte
、 java.lang.Long
和 java.lang.Short
类都分别维护了一个内部缓存,用于存储唯一的 Byte
、 Long
和 Short
对象。以 Integer
类为例, Integer.valueOf(127)
每次调用都会返回相同的 Integer
对象引用,所以 i1 == i2
(比较引用)的结果为 true
。但对于 Integer.valueOf(30000)
,由于其超出了默认范围,每次调用都会返回一个新的 Integer
对象引用,因此 i1 == i2
的结果为 false
。
需要注意的是, ==
和 !=
运算符在比较时不会对装箱值进行拆箱操作,而 <
、 >
和 +
等运算符在执行操作前会先对装箱值进行拆箱。例如, i1 < i2
会被转换为 i1.intValue() < i2.intValue() <