3

以下是否会造成不必要的内存使用

    String[] words = text.split(" ");
    for (String s : words)
    {...}

text.split(" ")或者每次循环重复时都会进行以下调用

    for (String s : text.split(" "))
    {...}

哪种方式更可取?

4

3 回答 3

6

编写循环的每种方式都有优点:

  • 第一种方式更易于调试:您可以在for, 上设置断点并检查words
  • 第二种方法避免将名称words引入命名空间,因此您可以在其他地方使用该名称。

就性能和可读性而言,两种方式都一样好:split将在循环开始之前调用一次,因此使用第二个代码片段不会对性能或内存使用造成影响。

于 2012-11-21T02:54:22.903 回答
1

因为,我认为在性能方面没有区别:

String[] words = text.split(" ");
for (String s : words)
{...}

应该使用,因为您仍然可以使用生成的单词text.split(" ")进行进一步的数据操作。在第二种方法中,您只能将单词放在循环中。

于 2012-11-21T03:01:12.177 回答
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
于 2012-11-21T03:05:26.173 回答