以下是否会产生不必要的内存使用
String[] words = text.split(" ");
for (String s : words)
{...}
或者每次重复循环时都会调用text.split(" ")
for (String s : text.split(" "))
{...}
哪种方式更可取?
答案 0 :(得分:6)
编写循环的每种方式都有优点:
for
上设置断点,并检查words
words
,因此您可以在其他位置使用该名称。就性能和可读性而言,两种方式都同样好:split
将在循环开始之前调用一次,因此使用第二个代码片段不会产生性能或内存使用后果。
答案 1 :(得分:1)
因为,我认为在性能方面没有区别:
String[] words = text.split(" ");
for (String s : words)
{...}
应该使用,因为您仍然可以使用text.split(" ")
生成的单词进行进一步的数据操作。在第二种方法中,您只能使用循环内的单词。
答案 2 :(得分:0)
在下面的代码中,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