适用于(Integer) 1 == (Integer) 1
,这似乎是合法的。
那么为什么它会让(Integer) 222
的平等游览?
答案 0 :(得分:8)
Integer
是一个班级。因此,要比较对象,您需要使用equals
而不是==
使用较短的Integer实际发生的情况是,如果使用方法Integer
获得valueOf
,则总是获得-128到127之间的值的相同缓存实例。所以在这种情况下{{1工作。
如果您不使用==
使用运算符valueOf
明确创建新实例,那么它无效。
为了更清楚,我编写了valueOf的当前实现
new