首先我们来看一段代码,大家可以先不看结果,思考一下你们的结果是什么?
public static void main(String[] args) {
Integer i = 100;
Integer j = 100;
System.out.println(i == j);
System.out.println(i.equals(j));
Integer m = 1000;
Integer n = 1000;
System.out.println(n == m );
System.out.println(n.equals(m));
}
最终的执行结果如下:
true
true
false
true
==在比较的是两个对象在堆内存中存放的地址;equals比较的是两个对象所指向的内存空间的值是不是相同。
但是通过上面代码的执行结果我们可以明显的发现,Integer属于包装类型,包装类型在使用==进行比较的时候比较的是 i 和 j 在堆内存中存放的地址&