为什么==不适用于Java中的Wrapper类

时间:2015-08-26 12:38:59

标签: java integer wrapper

为什么即使值为2的整数变量相同,Integer类也会返回false。 仅当值大于127时才会发生这种情况。

    Integer a = 300;
    Integer b = 300;
    System.out.println(a==b);

以上代码打印为false。变量a和b的值相同,那么为什么这会打印为false。

    Integer a = 127;
    Integer b = 127;
    System.out.println(a==b);

此代码将打印为true。 任何人都可以解释一下为什么java表现得像这样。

谢谢

1 个答案:

答案 0 :(得分:3)

这是因为在微观层面上出于性能原因缓存127以下的值并使用相同的存储位置。这是true在第二种情况下的原因。