Java の for-each は、反復ごとに埋め込みメソッド (コレクションを返す) を呼び出しますか? 質問する

Java の for-each は、反復ごとに埋め込みメソッド (コレクションを返す) を呼び出しますか? 質問する

メソッド呼び出しがありMyClass.returnArray()、for-each 構造 (「拡張 for」ループとも呼ばれます) を使用して配列を反復処理する場合:

for (ArrayElement e : MyClass.returnArray()) {
   //do something
}

returnArray()メソッドは反復ごとに呼び出されるのでしょうか?

ベストアンサー1

いいえ、そうはなりません。最初の呼び出しの結果は、コンパイルされたコード内の一時変数に保存されます。

から効果的な Java 第 2 版、項目46:

配列の場合でも、for-each ループを使用してもパフォーマンスは低下しないことに注意してください。実際、配列インデックスの制限を 1 回だけ計算するため、状況によっては、通常の for ループよりもわずかにパフォーマンスが優れている場合があります。

おすすめ記事