在 Java 中,遍历字符串中所有字符的最快方法是:
String str = "a really, really long string";
for (int i = 0, n = str.length(); i < n; i++) {
char c = str.charAt(i);
}
或者这样:
char[] chars = str.toCharArray();
for (int i = 0, n = chars.length; i < n; i++) {
char c = chars[i];
}
编辑:
我想知道的是,在长时间的迭代过程中重复调用 charAt
方法的成本是否比在开始时执行一次对 toCharArray
的调用,然后在迭代过程中直接访问数组的成本低或者高。
如果有人能够为不同的字符串长度提供一个健壮的基准测试,考虑到 JIT 预热时间、 JVM 启动时间等等,而不仅仅是对 System.currentTimeMillis()
的两次调用之间的差异,那就太好了。