[英]Confusion about new String and String literals in Java
根據Kathy Sierra的書:
String s = "abc"; // creates one String object and one
// reference variable
在這種簡單情況下, "abc"
將進入池,而s
將引用它。
String s = new String("abc"); // creates two objects,
// and one reference variable
在這種情況下,因為我們使用了new關鍵字,所以Java將在普通(非池)內存中創建一個新的String對象,而s
將引用它。 此外,文字“ abc”將放置在池中。
據我所知,當我們使用文字時,它將值存儲在池中,但是當我們使用new關鍵字時,它將在堆中創建對象。 在這里我想知道,堆對象是否引用池數據(字符串)?
您使用new String(“ abc”)創建的變量與池“ abc”字符串不同。
String string1 = "abc";
String string2 = new String("abc");
System.out.println(string1.equals(string2)); //will print true
System.out.println(string1 == string2); //will print false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.