我有以下的for循环:
for(String s : someString.split("\\s+")){
//do something
}
Java在循环迭代时,是每次执行split()方法,还是只执行一次并保留临时数组以进行迭代?
在使用数组之前,它会将数组存储在一个临时变量中。
split方法只被调用一次。将结构(也称为for-each)视为以下内容:
更多信息请参见: http://www.leepoint.net/notes-java/flow/loops/foreach.html
P.S:此方法适用于Java 5及以上版本。
Iterable
接口,那是错误的。 - truthealityfor(i=0;i<array.length;i++)
,如果第二个参数实现了 Iterable
,则使用迭代器进行循环。自动拆箱是另一个功能,有时可以方便地与foreach结合使用,例如在 for (int n : list)
中,list
是一个 Iterable<Integer>
。 - truthealityIterable
或数组,for循环在不同情况下工作方式不同。有关更多详细信息,请参见此问题:http://stackoverflow.com/questions/6216768/does-unboxing-apply-to-arrays 现在,这带来了一个问题,即数组如何表示,因为Javadoc中似乎没有Array类。 - James P.
for
语句文档中有详细说明。 - Mat