3

以下は不必要なメモリ使用量を生み出しますか

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

text.split(" ")または、ループが繰り返されるたびに次の呼び出しを行いますか

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

どちらの方法がより好ましいでしょうか?

4

3 に答える 3

6

ループを作成する各方法には利点があります。

  • 最初の方法はよりデバッグ可能です:にブレークポイントを設定し、for検査することができますwords
  • 2番目の方法は、名前空間に名前を導入することを回避するwordsため、他の場所でその名前を使用できます。

パフォーマンスと可読性に関しては、どちらの方法も同じように優れsplitています。ループの開始前に1回呼び出されるため、2番目のコードスニペットを使用してもパフォーマンスやメモリ使用量に影響はありません。

于 2012-11-21T02:54:22.903 に答える
1

以来、パフォーマンスの点で違いはないと思います:

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

text.split(" ")によって生成された単語をさらにデータ操作に使用できるため、使用する必要があります。2 番目のアプローチでは、ループ内の単語のみを使用できます。

于 2012-11-21T03:01:12.177 に答える
0

次のコードでは、getList() は 1 回だけ呼び出されます。したがって、あなたが尋ねた2つの方法について、パフォーマンスに関して違いはないと思います。

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 に答える