我想使用正则表达式解析一个巨大的String largeString
。
我正在使用matcher.group()
来获取largeString
的子字符串。我的问题是:
matcher.group()是否返回一个新的String
对象,或者只返回对largeString
的子字符串引用?
据我所知,定义substring只为指针和3 int
个实例分配内存。我希望将largeString
用于其他目的,因此我更愿意保留子字符串实例,而不是创建新的String
。
答案 0 :(得分:2)
在某种程度上,这已在其他地方得到解答。
从Java 7u6开始,所有子字符串都是它们自己的String
对象。所以你不会只为16个字节分配内存,你将为整个String
对象分配内存。
信用:https://stackoverflow.com/a/14193606/1159805
编辑:以下是该提案的副本,解释了更改的原因:http://mail.openjdk.java.net/pipermail/core-libs-dev/2012-May/010257.html