以下是否会造成不必要的内存使用
String[] words = text.split(" ");
for (String s : words)
{...}
text.split(" ")
或者每次循环重复时都会进行以下调用
for (String s : text.split(" "))
{...}
哪种方式更可取?
编写循环的每种方式都有优点:
for
, 上设置断点并检查words
words
引入命名空间,因此您可以在其他地方使用该名称。就性能和可读性而言,两种方式都一样好:split
将在循环开始之前调用一次,因此使用第二个代码片段不会对性能或内存使用造成影响。
因为,我认为在性能方面没有区别:
String[] words = text.split(" ");
for (String s : words)
{...}
应该使用,因为您仍然可以使用生成的单词text.split(" ")
进行进一步的数据操作。在第二种方法中,您只能将单词放在循环中。
在下面的代码中,getList() 只被调用一次。所以我认为你问的两种方式在性能方面没有差异。
class Test {
static int[] list = {1,2,3,4,5};
static int[] getList() {
System.out.println("getList executed");
return list;
}
public static void main(String[] args) {
for(int n: getList()) {
System.out.println("n = "+n);
}
}
}
输出:
getList executed
n = 1
n = 2
n = 3
n = 4
n = 5