人生最曼妙的风景,竟是内心的淡定与从容!
用雙引號創建的相同內容的字串,均指向同一個引用。而new String出來的是新的一個物件。這也是為什麼要盡量避免new String
public class StringEqualsTest{ public static void main(String[] args) { String s1="Gavin"; String s2=new String("Gavin"); System.out.println("Gavin"==s1); System.out.println("Gavin"==s2); } } $java StringEqualsTest truefalse$java StringEqualsTest true🎜false🎜
public class StringEqualsTest{ public static void main(String[] args) { String s1="Gavin"; String s2=new String("Gavin"); System.out.println("Gavin"==s1); System.out.println("Gavin"==s2); } }
$java StringEqualsTest truefalse$java StringEqualsTest
$java StringEqualsTest truefalse
String不是基本資料型,所以使用==是比較的記憶體位址。
網路上關於Java的==和equals()的介紹很多,隨便瀏覽幾篇你就可以明白這個問題,這個問題表面很簡單,但是越往後就會越深入。
樓主 可以先去理解下 引用比較和值比較
java中==不是只能判斷數值類型嗎? 答:不是,==可以判斷基本資料型態(數值型別)、物件。
==
==比較的是字面值字串為引用類型,且已建立的字串在記憶體中不可變,s引用的是""字串的記憶體位址,相同的位址比較自然一樣
用雙引號創建的相同內容的字串,均指向同一個引用。而new String出來的是新的一個物件。這也是為什麼要盡量避免new String
String不是基本資料型,所以使用==是比較的記憶體位址。
網路上關於Java的==和equals()的介紹很多,隨便瀏覽幾篇你就可以明白這個問題,這個問題表面很簡單,但是越往後就會越深入。
樓主 可以先去理解下 引用比較和值比較
java中==不是只能判斷數值類型嗎?
答:不是,
==
可以判斷基本資料型態(數值型別)、物件。==比較的是字面值
字串為引用類型,且已建立的字串在記憶體中不可變,s引用的是""字串的記憶體位址,相同的位址比較自然一樣