2
A
回答
3
新的String(S)可以幫助garbase集合:
String huge = ...;
String small = s.substring(0,2); //huge.value char[] is not garbage collected here
String gcFriendly = new String(small); //now huge.value char[] can be garbage collected
15
從API文檔:
Unless an explicit copy of original is needed, use of this constructor is
unnecessary since Strings are immutable.
我能想到的唯一原因是在情況:
- 你已經創建了一個非常大的
String
:A. - 你」已經創建了一個小的子字符串:B基於A.如果你看看
substring
的實現,你會看到它引用相同的char []數組作爲原始字符串。 String
A已超出範圍,你想減少內存消耗。- 創建B的一個明確的副本將意味着副本:B」不再引用大
char[]
。允許B超出範圍將允許垃圾收集器收回支持A和B的大char[]
,僅留下小的char[]
支持B'。
0
以防萬一你需要的字符串是不一樣的,但相等的。
也許爲了確保測試,人們確實做了str.equals(str2)
而不是(str == str2)
。但我從不需要它。
相關問題
- 1. 爲什麼使用字符串的複製構造函數?
- 2. 字符串類的構造函數和複製構造函數
- 3. java鏈接列表複製構造函數和字符串構造函數
- 4. 段錯誤複製構造函數爲字符串
- 5. 什麼作爲字符串參數傳遞給構造函數?
- 6. 什麼是volatile複製構造函數?
- 7. [問題]爲什麼複製構造函數沒有被調用
- 8. 爲什麼複製構造函數沒有被調用?
- 9. 爲什麼String類有複製構造函數?
- 10. 複製構造函數沒有調用,爲什麼?
- 11. 爲什麼調用複製構造函數而不是移動構造函數?
- 12. 爲什麼在調用複製構造函數之前調用構造函數?
- 13. Java:爲什麼構造函數具有訪問修飾符?
- 14. 爲什麼JAVA需要構造函數?
- 15. java構造函數有什麼意義?
- 16. C + + std ::複製結果不同於字符串構造函數
- 17. 使用clone()複製字段與複製構造函數Java
- 18. 爲什麼模板複製構造函數會覆蓋默認的複製構造函數?
- 19. 爲什麼System.Data.SqlClient.SqlDataReader沒有構造函數
- 20. 雙列表複製構造函數:與單列表複製構造函數有什麼不同?
- 21. 爲什麼複製構造函數不像默認構造函數或析構函數那樣「鏈接」?
- 22. 錯誤:「net.sf.sahi.plugin.DBClient」的Java構造函數帶有參數「字符串,字符串,字符串,字符串」未找到
- 23. Java泛型複製構造函數
- 24. Java複製構造函數ArrayLists
- 25. java鏈表複製構造函數
- 26. Java調用複製構造函數
- 27. Java複製構造函數和繼承
- 28. 爲什麼在這裏調用複製構造函數?
- 29. C++爲什麼要調用複製構造函數?
- 30. 爲什麼該方法調用結束複製構造函數?
重複http://stackoverflow.com/questions/334518/java-strings-string-s-new-stringsilly的? – VonC 2009-11-26 12:04:07
Dupe:http://stackoverflow.com/questions/390703/what-is-the-purpose-of-the-expression-new-string-in-java,http://stackoverflow.com/questions/465627/use -of-the-stringstring-constructor-in-java – 2009-11-26 12:04:08