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操作表示的兩個變量是否是對同一個對象的引用,即堆中的內容是否相同。
參照鏈接:https://zhidao.baidu.com/question/61622858.html