我正在通过this question,其中一个answers提供了2个选项,并说第一个选项可能更快。

我想知道为什么?

答案中提到的2个选项是

for(int i = 0, n = s.length() ; i < n ; i++) {
    char c = s.charAt(i);
}


要么

for(char c : s.toCharArray()) {
    // process c
}

最佳答案

建议的第二个答案将创建一个char数组并对其进行迭代。由于在遍历数组之前创建数组会产生额外的开销,因此该机制可能会更慢。此开销与字符串的长度相关。

您引用的答案中未提及的第三种方法涉及使用StringCharacterIterator;例如

CharacterIterator it = new StringCharacterIterator("Hello, World");
char c;

while ((c = it.next()) != CharacterIterator.DONE) {
  System.err.println("Char: " + c);
}


但是,我个人倾向于在您引用的答案中使用第一个基于索引的解决方案。

10-02 21:55