簡體   English   中英

關於Java中新的String和String文字的困惑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM