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来生成字符串
值?只是好奇演出