【发布时间】:2011-09-07 03:50:10
【问题描述】:
我有以下 for 循环:
for(String s : someString.split("\\s+")){
//do something
}
java 是在每次循环迭代时执行 split() 方法,还是只执行一次并保留一个临时数组进行迭代?
【问题讨论】:
标签: java string loops for-loop
我有以下 for 循环:
for(String s : someString.split("\\s+")){
//do something
}
java 是在每次循环迭代时执行 split() 方法,还是只执行一次并保留一个临时数组进行迭代?
【问题讨论】:
标签: java string loops for-loop
它只执行一次,并使用该数组并通过它进行交互。
编辑:来自 Mat 这是reference
【讨论】:
for statement 文档中详细说明了发生的情况
它在使用之前将数组存储在一个临时变量中。
【讨论】:
没有在字符串上执行一次拆分,然后循环遍历结果
【讨论】:
split 方法只调用一次。考虑如下结构(也称为 for-each):
更多信息可以在这里: http://www.leepoint.net/notes-java/flow/loops/foreach.html
P.S:这适用于最低 Java 5。
【讨论】:
Iterable 接口,那就错了。
for(i=0;i<array.length;i++),如果第二个参数实现Iterable 它使用for 循环的迭代器。拆箱是一个单独的功能,有时可以方便地与 foreach 结合使用,例如for( int n : list ),其中list 是Iterable<Integer>。