2012-12-29 35 views
-1

在Java中,以下兩段代碼有區別嗎?我正在尋找內存使用情況和字符串池方面的答案。Java中的字符串創建(內存使用)

第一:

String s = new String(); 

s = "abcdef"; 

第二種:

String s = new String("abcdef"); 

感謝。

+2

創建兩個字符串(一個空)和第二個「ABC ...」。在第二個只有一個。 – gregory561

+2

http://stackoverflow.com/questions/2486191/java-string-pool?rq=1等等包含大量關於此的信息。如果在你所不瞭解的所有各種問題和答案中有某些問題,那麼具體問題會更有用。 –

+0

這裏的第一條評論是完全錯誤的。這兩種情況都會創建兩個'String'對象。字符串文字被執行並存儲在字符串池中。 –

回答

2

您在第一個中進行了創建和值賦值。在第二個,你只是做一個創作。你在第一個中做了(幾乎)兩次處理器活動。說到記憶,沒有區別。

和字符串池解釋你的問題:

What is the Java string pool and how is "s" different from new String("s")?

在第一種情況下
+0

爲什麼內存沒有區別?你在第一種情況下創建兩個實際上是兩個字符串對象。 – gregory561

+1

@ gregory561 - 並在第二種情況下創建兩個;)該文字不會奇蹟般地消失 - 它會進入字符串池中。 –

相關問題