dポイントプレゼントキャンペーン実施中!

SJC-P 問題集 問13の疑問より
for文について教えてください。

一般的なfor文だと次の形だと思うのですが
for(int i = 0; i < 5; i ++){
//5回ループする
}

Animal [] animals = { new Animal(), new Cow() };
for( Animal a : オブジェクト配列animals ){
a.saySomething();
}

のような場合、このfor文は
「オブジェクト配列の中にanimalsがあるまでの間、ループする」という意味を指しているのでしょうか?

for( クラス名 オブジェクト名 : オブジェクト配列)
の一文にある「:」← の役割は何なのでしょうか?

A 回答 (2件)

>「オブジェクト配列の中にanimalsがあるまでの間、ループする」という意味を指しているのでしょうか?



いやいや、そうじゃない。

for (変数 : 配列またはコレクション )

これは、配列またはコレクションに保管されている要素を1つずつ取り出し、変数に設定してその後のブロックを実行する、ということ。配列などの全要素に対し同じ処理を実行するのに用いる。

>「:」← の役割は何なのでしょうか?

役割というか、「そう書く」と決まっているだけだからなぁ。つまりは、「:の後にある配列から順に値を取り出して、:の前にある変数におさめる」というのにこう書く、ということ。そう書く決まりだから、役割というほどのものでもない。
    • good
    • 0
この回答へのお礼

ありがとうございます。


for( Animal a : オブジェクト配列animals ) は、
Animal a より「a」という変数を生成しているところから

for (変数 : 配列またはコレクション ) の定義に当てはめることができているということですよね?

後のブロックを実行というのは、

↓の{}の中のことでしょうか?
------------------------------------------
for (変数 : 配列またはコレクション ){

}
------------------------------------------


>「:の後にある配列から順に値を取り出して、:の前にある変数におさめる」というのにこう書く

こちらを例とすると
for(Animal a : animals[オブジェクト配列] ){
a.saySomething();
}

(1) 配列の中の1番目の要素を取り出す → 配列1番目のオブジェクトにあるsaySomething()を実施
(2) 配列の中の2番目の要素を取り出す → 配列2番目のオブジェクトにあるsaySomething()を実施

という意味になる、という解釈で合っていますでしょうか?

お礼日時:2009/05/28 22:19

他の言語で言うところのforeach構文ですね


Wikipediaの解説です↓
http://ja.wikipedia.org/wiki/Foreach%E6%96%87

この回答への補足

ありがとうございます。
現時点で解説を読ませていただいて、理解度的に90%ぐらいだと思うのですが、合っていますでしょうか?

>プログラミング言語においてリストやハッシュテーブルなどのデータ構造の各要素に対して与えられた文の実行を繰り返すというループを記述するための文

・リストやハッシュテーブルなどのデータ構造の各要素
"a""b""c" という各要素があれば、
「その各要素 一つずつに対してfor文の中を実行するという意味でしょうか?」

補足日時:2009/05/31 09:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!