2014年3月24日月曜日

Java ForEach文


Java5.0以降追加されたForEach文というものがあります。
恥ずかしい話ですが最近まで知りませんでした。ので忘れないうちにメモ...

用途としては、配列の中身を順に1つずつ取り出して扱いたいときに使います。
式は以下のとおり。

ForEach文の式
===============================================
for(取り出した値を入れる型と変数名 : 配列名) {
  処理
}
===============================================

For文はセミコロンを使いますが、こちらはコロンですね。
つい癖で間違えそうです。


お気づきかとは思いますが、
「配列の中身を順に1つずつ取り出して扱う」という処理自体は、For文でも書けます。\

しかし、ForEachを使うと以下のようなメリットがあります。

====================================================
*コードが短く済む
*読みやすい
*配列の長さを意識する必要がない
//長さを指定し使用すると参照できずに例外となる場合も
//(大抵の場合、lengthを使うとは思いますが。)
====================================================

へえ~なるほど。


実際にFor文とForEach文で同じ処理を書き比べてみます。

【処理】
*listという名前の文字列を入れた配列があり、
その中の値を順にコンソール上に表示させる。


まずはFor文
====================================================

String str = "";
String[] list = {"a","b","c"}; //String型の配列list

for(int i ; i < list.length() ; i++ ){
str = list[i];
System.out.println(str);
}

【実行結果】
a
b
c
====================================================

一般的であろう、配列の長さをlength()によって求め、
その回数分For文で回す~という書き方をしました。
(多分あってる)



そしてForEach文だとこうなります。
====================================================

String[] list = {"a","b","c"};

for(String str : list) {
  System.out.println(str);
}

【実行結果】
a
b
c
====================================================


一目瞭然ですね。ForEach文のほうが明らかに短いですし、読みやすいです。

いずれ速度を測って追記します。