数字促销和平等?

时间:2011-08-02 10:11:58

标签: java equality numeric autoboxing

  

可能重复:
  Wrapper class and == operator

我的朋友有一个谜题。这是它:

public class Test{
    public static void main(String[] args){
        Integer i = 1000; //10
        Integer y = 1000; //10      
        System.out.println(i == y);
    }
}

结果将为FALSE。那就对了。但是当将i,y值替换为10时,结果为TRUE。

根据我的阅读,当operator ==应用于引用变量时,它将测试它们是否引用同一个对象。我不知道为什么会有这样的结果,但我想数字推广中的问题。我真的需要帮助。 谢谢每一个人。

1 个答案:

答案 0 :(得分:2)

没有任何提升,因为10和1000,作为数字文字,是int类型。

但是小型Integer-Objects有一个值池,类似于stringpool,因为大多数值都很小,或者更常使用小值。但是为了限制池的大小,它只覆盖-128到127之间的一些值。

根据经验:对于Objects,总是将它们与equals进行比较,只使用==的基本类型。