1

効率の面で違いはありますか

int[] numbers = {1,2,3,4,5,6,7,8,9,10};
for (int item : numbers) {
   System.out.println("Count is: " + item);
}

int[] numbers = {1,2,3,4,5,6,7,8,9,10};
for (int i = 0; i < 10; i++) {
   System.out.println("Count is: " + numbers[i]);
}
4

5 に答える 5

5

アレイについても同じです。番号の注文リストがある場合は、使用する必要があります

for(int i = min; i <= max; max += stride)

また

for(int i = min; i < max+stride; max += stride)

例えば

for(int i = 1; i < 11; i++)

また

for(int i = 1; i <= 10; i++)

または10ずつインクリメントする場合

for(int j = 0; j <= 100; j += 10)

使用する値の定義済みリストがある場合は、配列を使用できます。

私はよくこのように書きます

for (int item : new int[] {1, 2, 5, 10, 20, 50, 100}) 
   System.out.println("Count is: " + item);
于 2012-10-22T20:04:54.527 に答える
3

実際、両方のコードスニペットに対して生成されるバイトコードはほぼ同じになります。これはjavapなどのツールで確認できます。また、Eclipseの逆コンパイルされたクラスビューアで表示することもできます。

于 2012-10-22T20:04:23.153 に答える
3

の場合Array []は似ていますが、CollectionsなどArrayListの場合は異なります。

于 2012-10-22T20:08:36.900 に答える
1

ループ内で非常に奇妙なことをしているのでない限り、パフォーマンスの違いは検出できません。質問に対する答えが何であれ、これは「ペニーワイズ、ポンドバカ」の最適化です。どの機能が必要で、どのコードがより明確であるかを決定する必要があります。(IMO、オプション1はよりシンプルで明確ですが、オプション2が必要になる場合もあります)

プログラムの存続期間中、ループで追加された時間よりも、質問の入力と回答の読み取りに多くの時間を費やした可能性があります。:-)

どこに質問すればよいかわかりませんが、このような質問に追加できる「時期尚早の最適化」タグがあるはずです。

于 2012-10-22T20:12:29.407 に答える
0

パフォーマンスは非常に似ているので、お気に入りを選択する必要があります。私にとっては、for-eachは常によりエレガントですが、プログラマーはそれぞれ異なります^^

于 2012-10-22T20:07:12.143 に答える