Java中为什么(整数)222!=(整数)222?

时间:2016-02-15 12:32:25

标签: java integer equals equality

适用于(Integer) 1 == (Integer) 1,这似乎是合法的。

那么为什么它会让(Integer) 222的平等游览?

1 个答案:

答案 0 :(得分:8)

Integer是一个班级。因此,要比较对象,您需要使用equals而不是==

使用较短的Integer实际发生的情况是,如果使用方法Integer获得valueOf,则总是获得-128到127之间的值的相同缓存实例。所以在这种情况下{{1工作。

如果您不使用==使用运算符valueOf明确创建新实例,那么它无效。

为了更清楚,我编写了valueOf的当前实现

new