String s = "a";與String s = new String("a")的區別


String s1 = "a" 時,首先會在字符串常量池中查找有無 “a” 這個對象。 若沒找到,就創建一個 "a" 對象,

然后,以 s1 為它的引用。若在字符串常量池中找到了 “a” 這個對象, 同樣也將 s1 作為它的引用。

若再執行一次 String s2 = "a" , 那么 s1 和 s2 都是同一個對象的引用,即 邏輯判斷 s1 == s2 的結果是 true。

String s3 = new String("a") 時,將在字符串常量池外的堆里,創建一個 "a" 對象,

然后,以 s3 為它的引用。這時,s3 對應的是 字符串常量池外的一個對象。因此,無論 s3 == s2,還是 s3 ==s1,其結果都是 false。

 1 public class Demo {  2     public static void main(String[] args) {  3         String s1 = "a";  4         String s2 = "a";  5         String s3 = new String("a");  6         System.out.println(s1 == s2);// true
 7         System.out.println(s1 == s3);// false
 8         System.out.println(s2 == s3);// false
 9  } 10 }

結果為:

1 true
2 false
3 false

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM