2

可能重复:
为什么 Java 看不到整数相等?

我从同一个参数分配了 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

谢谢您的考虑。

4

1 回答 1

1

由于 ++-- (已创建新对象),您正在比较两个不同的引用。比较两个 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)
于 2012-09-19T20:43:52.637 回答