Java matcher.group()的内存分配

Java matcher.group()的内存分配,java,android,regex,memory-management,substring,Java,Android,Regex,Memory Management,Substring,我想使用正则表达式来解析一个最大的字符串 我正在使用matcher.group()。我的问题是: Do matcher.group()返回一个新的字符串对象,或者只返回对最大字符串的子字符串引用 据我所知,定义子字符串只为指针和3个int实例分配内存。我想保留最大的用于其他目的,因此我更喜欢保留子字符串实例,而不是创建新的字符串,这在某种程度上已经在其他地方得到了回答 自Java7U6以来,所有子字符串都是它们自己的String对象。因此,您不仅可以为16个字节分配内存,还可以为整个字符串对象分

我想使用正则表达式来解析一个最大的
字符串

我正在使用
matcher.group()。我的问题是:

Do matcher.group()返回一个新的
字符串
对象,或者只返回对
最大字符串
的子字符串引用


据我所知,定义子字符串只为指针和3个
int
实例分配内存。我想保留最大的
用于其他目的,因此我更喜欢保留子字符串实例,而不是创建新的
字符串
,这在某种程度上已经在其他地方得到了回答

自Java7U6以来,所有子字符串都是它们自己的
String
对象。因此,您不仅可以为16个字节分配内存,还可以为整个
字符串
对象分配内存

学分:


编辑:这是一份提案的副本,解释了为什么要进行更改:

@fge:一个与你的
CharSequence
有关的问题……我想。谢谢,我在看一篇老博文:p这意味着如果我想节省内存,比如说,我应该存储matcher.start()和end()?(只需2个
int
)并稍后动态调用子字符串方法?@Ivan没错,但请记住,调用
substring
将创建一个全新的
String
对象。由于
substring
处于动态,它们将临时使用,并将被垃圾收集。