值比较与对象参考比较

Gop*_*ngh -1 java

请有人解释一下,为什么答案是真的和错误的

public class IntegerTest {

        public static void main(String[] args) {

            Integer x = 1000;
            long y = 1000;
            Integer z = 1000;
            System.out.println(x == y);
            System.out.println(x == z);

        }
    }
Run Code Online (Sandbox Code Playgroud)

ale*_*lex 7

x == y是一个值比较(因为y是一个基本类型),所以1000 == 1000 - > true.

x == z是对象引用比较 - 对象x不是对象z.它们具有相同的值,但它们仍然是两个完全不同的对象.所以,如果你比较它们,你会得到false.

JLS第5.1.7节中的装箱和拆箱转换.