仕事なのだから基本的なことを体系的に理解しないとまずい!という話になり、現在Javaについて基礎から勉強しなおしています。恥ずかしいことにこうした勉強をするまで、Errorクラスの存在を知りませんでした。何でもかんでも例外扱いなのではなかったのですね。一歩前進です。
で、forループについていろいろ面白いことが分かったので少しまとめておきます。
拡張forループ
俗に言うfor-eachですが、Javaでも利用できるようです。Rubyほど直感的で分かりやすい書き方とはいえませんが……。
int[] a = {1, 3, 5, 7}; // 普通のforループ for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } // 拡張forループ ソース・レベル5.0以上で使用可能 for(int j : a) { System.out.println(j); }
なおRubyだとこんな感じ。
# 小さい順に表示したいのでソートする for i in {1, 3, 5, 7}.sort do puts i end {1, 3, 5, 7}.sort.each do |i| puts i end
ついでにHSP。
a = 1, 3, 5, 7 foreach a mes a(cnt) loop
ラベルつきforループ
これが必要になるケースをあまり想像できないのですが、ラベルを利用することで内側のループ内で外側のループに対してcontinueやbreakが可能になるようです。多次元配列を線形検索する際などに利用するのでしょうか。
// outerLoopというラベルをforループにつける outerLoop: for (int o = 0; o < 10; o++) { System.out.print(o + ":"); for (int i = 0; i < 10; i++) { if (o == i) { System.out.println(); continue outerLoop; } System.out.print('*'); } System.out.println("絶対に到達しないコード"); }