我的朋友有一个谜题。这是它:
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 ==应用于引用变量时,它将测试它们是否引用同一个对象。我不知道为什么会有这样的结果,但我想数字推广中的问题。我真的需要帮助。 谢谢每一个人。
答案 0 :(得分:2)
没有任何提升,因为10和1000,作为数字文字,是int类型。
但是小型Integer-Objects有一个值池,类似于stringpool,因为大多数值都很小,或者更常使用小值。但是为了限制池的大小,它只覆盖-128到127之间的一些值。
根据经验:对于Objects,总是将它们与equals进行比较,只使用==的基本类型。