public class StaticDemo {
public static void main(String[] args) {
/**
* 1、包装类的“==”运算在未遇到算术运算的情况下不会自动拆箱(堆中存储的地址是否相同,即栈中的内容是否相同)
* 2、equals()方法不会处理数据类型转换关系(同一个对象的引用,即堆中的内容是否相同)
*/
Integer a = 1;
Integer b = 2;
Integer c = 3;
Integer d = 3;
Integer e = 300;
Integer f = 300;
Long g = 3L;
System.out.println(c == d);//true
System.out.println(e == f);//false
System.out.println(c == (a+b));//true
System.out.println(c.equals(a+b));//true
System.out.println(g == (a+b));//true
System.out.println(g == (a+b));//true
System.out.println(g.equals(a+b));//false
}
}
运行结果: true
false
true
true
true
false
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。