java建立String的兩種方法在內存中的表現形式和區別

java建立String的兩種方法在內存中的表現形式和區別

一,建立String的兩種方法

String str1 = "abcd";
String str2 = new String("abcd")

二,下面比較這兩種方法的區別

String a = "abcd";
String b = "abcd";
System.out.println(a==b); //結果爲true;
System.out.println(a.equals(b)); // 結果爲true

用""建立的a,b兩個字符串 == 和 equals比較結果返回都爲true,這是由於a,b都指向了方法區的同一個字符串,因此當一樣的一個字符串用""重複建立時只是引用了方法區的這個字符串的值。java

String c = new String("abcd");
String d = new String("abcd");
System.out.println(c==d); //結果爲false;
System.out.println(c.equals(d)); // 結果爲true

用new建立的兩個字符串,equals比較返回結果爲true,由於equals比較的是兩個字符串的值,而==爲false說明比較的時兩個字符串的引用,也就是指向的地址不相同,用new建立的字符串每次都會在JVM堆中建立,因此c,d實際上是引用兩個不一樣的字符串,因此==比較的結果固然爲false。code

相關文章
相關標籤/搜索