[英]Performance comparison of charAt() method of String vs StringBuilder in Java
我知道StringBuilder在涉及需要某种变异的操作时比String更快。 但是,如果我只想访问特定字符而不需要其他操作,那么两者的charAt()
方法之间是否存在性能差异?
作为一个简单的例子,如果我需要打印字符串的替代字符,从第一个字符开始,有没有什么首选的方法来做到这一点,下面给出的两个?
// 1
String dummyStr = "fhweyxnqwiynfgHINYUIYIOhuiw12341dfs";
for (int i = 0; i < dummyStr.length(); i += 2) {
System.out.print(dummyStr.charAt(i));
}
// 2
StringBuilder dummySb = new StringBuilder(dummyStr);
for (int i = 0; i < dummySb.length(); i += 2) {
System.out.print(dummySb.charAt(i));
}
此外,以这种方式(使用char[]
)这样做有什么好处/缺点吗?
// 3
char[] dummyArr = dummyStr.toCharArray();
for (int i = 0; i < dummyArr.length; i += 2) {
System.out.print(dummyArr[i]);
}
请注意:
对于这个问题,我只关心时间方面的性能,而不关心使用的额外内存。 此外, System.out.print()
只是用于本示例的占位符操作。
String
和StringBuilder
都由数组支持, charAt()
获取指定索引处的值。
由于String
是不可变的,它必须在返回数组之前制作一个防御性副本。 所以它有一些额外的开销。 但是 imo,这只会对于非常大的字符串或将许多字符串重复转换为数组来说是一个问题。 这完全取决于您如何使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.