我正在通过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);
}
但是,我个人倾向于在您引用的答案中使用第一个基于索引的解决方案。