Java StringBuilder和子字符串性能

Java StringBuilder和子字符串性能,java,substring,stringbuilder,Java,Substring,Stringbuilder,关于与Java中的String操作相关的性能问题: String s = ".........................,--content I wanted---,...."; 基本上,我将使用for循环来迭代一个长字符串,并提取,之间的内容 使用substring是在迭代过程中记录开始索引和结束索引,然后执行s.substring(开始,结束) 使用StringBuilder,我将在迭代过程中在逗号之间添加每个字符 这是否存在性能问题?我的意思是,当我有大量关于提取字符串内容的此类操

关于与
Java
中的
String
操作相关的性能问题:

String s = ".........................,--content I wanted---,....";
基本上,我将使用
for
循环来迭代一个长字符串,并提取
之间的内容

使用
substring
是在迭代过程中记录开始索引和结束索引,然后执行
s.substring(开始,结束)

使用
StringBuilder
,我将在迭代过程中
在逗号之间添加
每个
字符


这是否存在性能问题?我的意思是,当我有大量关于
提取
字符串内容的此类操作时,哪个操作会更快。

字符串。子字符串
比使用
StringBuilder添加要快得多

在Java7u6之前,
子字符串
方法返回一个新的
字符串
,该字符串保留了对旧字符串值的引用(这是一个字符数组),并调整了开始和结束位置。这是它所称的构造函数:

 String(int offset, int count, char value[]) {
     this.value = value;
     this.offset = offset;
     this.count = count;
 }
这已更改,较新版本使用以下代码:

 Arrays.copyOfRange(value, offset, offset+count);

这仍然要快得多,因为
数组.copyOfRange
使用
系统.arraycopy
,它可以非常快速地复制数组,而且肯定比重复调用
append
字符串要快。子字符串
比使用
StringBuilder
进行追加要快得多

在Java7u6之前,
子字符串
方法返回一个新的
字符串
,该字符串保留了对旧字符串值的引用(这是一个字符数组),并调整了开始和结束位置。这是它所称的构造函数:

 String(int offset, int count, char value[]) {
     this.value = value;
     this.offset = offset;
     this.count = count;
 }
这已更改,较新版本使用以下代码:

 Arrays.copyOfRange(value, offset, offset+count);

这要快得多,因为
Arrays.copyOfRange
使用
System.arraycopy
,它可以非常快速地复制数组,当然比重复调用
append

要快,为什么不直接使用
String#split
和appen来生成
String
值?只是好奇性能。为什么不直接使用
String#split
和appen来生成
字符串
值?只是好奇演出