我有2个整数,我从同一个参数分配。
其中一个整数我将值减1然后将值增加1.
当我再次比较它们时,它们并不总是平等的。
这是我的书,有人可以解释,我无法理解我的书籍解释。
class Test{
public static void main(String[] args){
Integer i = Integer.parseInt(args[0]);
Integer j = i;
System.out.println("1:" + i + ", j:" + j);
i--;
System.out.println("2:" + i + ", j:" + j);
i++;
System.out.println("3:" + i + ", j:" + j);
System.out.println((i==j));
}
}
输出: 输入256作为参数
1:256, j:256
2:255, j:256
3:256, j:256
false
感谢您的考虑。
答案 0 :(得分:1)
由于++ - (New Objects Created),您正在比较两个不同的引用。比较两个Integer对象equals()方法的方法。 equals()将检查Integer的内部状态。检查此代码:
Integer i = 256;
Integer j=i;
System.out.println(i==j); //True (Because we are pointing the same object)
i--;
i++;
System.out.println(i==j); //False (Because reference has changed)
System.out.println(i.equals(j)); //True (Because the inner state is the same)