入門じゃないJava(8)

こんにちは。

今日もJavaを見てみましょう。

 

前回、前々回と配列を見てきました。

creators.hateblo.jp

今回も配列です。といっても、今回で(今回こそ)一次元配列を終わらせて、次回からは多次元配列を見ていきましょう。

 

拡張for文

配列を扱う際には必ずと言っていいほどfor文を利用します。

このfor文を基本for文と呼びます。

もう一つの拡張for文を利用すると配列の走査をきわめて簡潔に実現で
きます。

これは配列の全要素の合計を求めて表示するプログラムです。

class ArraySumForIn {
    public static void main(String[] args) {
        double[] a = { 1.0, 2.0, 3.0, 4.0, 5.0 };
        
        for (int i = 0; i < a.length; i++)
            System.out.printf("a[%d] = %.2f\n", i, a[i]);
        
        double sum = 0;
        for (double i : a)
            sum += i;

        System.out.printf("全体の和は%.2fです。\n", sum);
    }
}
×

実行結果

C:\Java\01>java ArraySumForIn
a[0] = 1.00
a[1] = 2.00
a[2] = 3.00
a[3] = 4.00
a[4] = 5.00
全体の和は15.00です。

C:\Java\07>_

f:id:creators_plus:20170507160859p:plain

新しい形式のfor文が出てきましたね。

()の画家のコロン:は"~の中の"という意味です。

そのため、この拡張for文は for   (double)  i  :   a   フォー ダブル アイ イン エイ とも呼ばれます。

 このことから、拡張for文は"for-in文"あるいは"for-each文"などとも呼ばれます。

このfor文は以下のように理解します。

配列aの先頭から末尾までの全要素を1つずつ走査します。ループ本体では現在着目している要素をiと表現します。

 すなわち、変数iはint型の整数値である"インデックス"を表すのではなく、double型の"走査において着目している要素"を表します。

拡張for文を利用するときには以下のようなメリットがあります。

配列の長さを調べる手間が省ける。

イテレータと同じ方法で走査を行える。 

 配列を逆順に並び替える

 配列の全要素を逆順に並び替えるプログラムを考えてみましょう。

 

 今日はここまでにしましょう。

 

では!

 

 

参考文献

柴田 望洋 (2016) .『新・明解Java入門』196-197