关于与String
中的Java
操作相关的性能问题:
String s = ".........................,--content I wanted---,....";
基本上我将使用for
循环来迭代一个长字符串并在,
之间提取内容。
使用substring
是在迭代期间记录开始索引和结束索引,然后执行s.subtring(begin,end)
。
使用StringBuilder
,我会在迭代期间的逗号之间append
char
。{/ p>
这是否存在性能问题?我的意思是当我对extracting
字符串的内容进行大量此类操作时,哪一个会更快。
答案 0 :(得分:3)
string.substring
比使用StringBuilder
追加要快得多。
在Java7u6之前,substring
方法返回了一个新的String
,它保留了对旧字符串值(char数组)的引用,并调整了开始和结束位置。这是它调用的构造函数:
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
更快。