[Java]全要素の初期値が0の固定長多次元配列を動的に生成してみる


前提の確認

Javaでプリミティブ型の配列を宣言する際に、初期値をセットしなければ、自動的に全要素の初期値が0になることは衆知の事実です。今まで毎回0代入をループ回していた自分はかなりのうましか慎重派でしたね。

実演してみる

今回はそれに加えて要素数をint型の変数で設定していくサンプルをお見せします。

コード例

public class Test {

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ

        int x = 20;
        int y = 6;

        int[][] n = new int[y][x];

        //配列を表示する
        for (int[] s : n) {

            //一行ずつカンマ区切りの文字列を生成していく
            StringBuilder sb = new StringBuilder();
            for (int i : s) {
                sb.append(i + ", ");
            }
            System.out.println(sb);
        }
    }

}

結果

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 

解説

まず、最初の二行で要素数を設定します。今回は$x=20\ , y=6$としました。
次に、int[][] n = new int[y][x];として二次元配列nを宣言しておりますが、
ここで注意していただきたいのは、要素数を行→列(この例で言うならばy→x)と並べないと直感的な結果にはなりにくいということです。

詳しくは割愛しますが、もしint[x][y]としてしまうと、この例であれば表示の際に縦に20、横に6個の0が表示されてしまいます。