-1
    public class Test {
    public static void main(String[] args) {
        Integer i=555,j=555;
        System.out.println(i==j); //false
        Integer l=5,n=5;
        System.out.println(l==n); //true
    }
}

为什么,爪哇?这怎么可能呢?

4

1 回答 1

2

您正在比较Integer具有相同值的两个不同类实例的引用,因此您必须使用该equals方法(因为它必须用于比较对象之间的相等性):

Integer i=555,j=555;
System.out.println(i==j); //false
Integer i=555,j=555;
System.out.println(i.equals(j)); //true

但是Integer有一个Integer对象实例池,其int值介于 -128 和 127 之间。所以当你这样做时

Integer l=5,n=5;
System.out.println(l==n); //true

您收到truesinceln 指向同一个对象引用。

于 2013-08-29T20:21:08.607 回答