What is the purpose of the expression "new String(...)" in Java?
简而言之,问题是从一个巨大的字符串创建一个子字符串 所以作者争辩说最好使用新的String(substring)构造函数,因为substring()返回的字符串将使用相同的char []作为父字符串,所以如果我们不使用new String()那么巨大的文字将仍在使用中。 为了避免不必要的巨大char []占用内存,最好用较小的char []创建新的String对象,从而缩短文字。 然后巨大的char []可以被垃圾收集 但! 因为我学到的文字从来都不是垃圾收集!
Garbage collection of String literals
因此,即使任何局部变量没有指向巨大的char [],它仍然可以保留在文字池中,因此无法有效地使用内存。