执行以下操作:
data.substring(x, y) + ""
创建一个新的(较小的)String对象,并丢弃对substring()创建的String的引用,从而实现对此的垃圾回收。
重要的是要实现
substring()对 现有 String
的窗口,或者说是原始String下方的字符数组的窗口。因此,它将消耗与原始String相同的内存。在某些情况下这可能是有利的,但是如果您想获得一个子字符串并处置原始String(如您所知),则会遇到问题。
查看JDK String源中的substring()方法以获取更多信息。
编辑:要回答您的补充问题,从子字符串构造一个新的String将减少您的内存消耗, 只要 您将对原始String的任何引用都进行装箱。
注意(2013年1月)。在Java 7u6中,以上行为已更改。flyweight模式不再使用,
substring()将按您期望的那样工作。



