Java 中 == 比較的是什麼?
阿新 • • 發佈:2018-12-15
1、對於物件引用型別:“==”比較的是物件的記憶體地址。 例子:
public class ArrayTest {
public static void main(String[] args){
String a = new String("aw");
String b = new String("aw");
System.out.println(a==b);//false
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
顯然,儘管 a 與 b 物件的值相同,但是在記憶體中的地址是不同的,即兩個物件是不一樣的。
再看一個例子:
public class ArrayTest {
public static void main(String[] args){
String a = new String("aw");
String b = new String("aw");
String c= "aa";
String d= "aa";
System.out.println(a==b);//false
System.out.println(c==d);//true
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
這是因為常量池的存在。而執行時常量池其實是屬於方法區的一部分。通俗的說,c 和 d 其實都是都是指向 “aa”這個常量。
2、對於基本型別資料,其實比較的是它的值。