【Java入門講座】9章.配列の基本(宣言・初期化・追加・要素数・多次元配列)

Java入門レッスン

☜前の章へ メソッドの呼び出し方から引数と戻り値まで
☞次の章へ オブジェクト指向とクラス


【Java入門講座】は全10章から構成される、初心者向けのJava学習コンテンツです。1章から10章まで学習して頂くことでJavaの基礎を学習することができます。

この記事で分かること
  1. 配列とは
  2. 配列の基本的な書き方
  3. 多次元配列(2次元配列)の書き方
  4. lengthの書き方
  5. ループで配列の値を出力する方法

変数は、1つの変数につき、1つの値が入る箱の様なものでした。 配列は、1つの配列につき、複数の値が入る箱の様なものです。

配列とは

配列とは、同じ型の複数の値が1つの変数に格納されたものです。

変数

項目Aさん
身長154
変数のイメージ

変数の場合、例えばAさんの身長を変数に格納しようとすると以下のようになります。

int height = 154;

このように変数には1つの値しか格納できません。

配列

項目AさんBさんCさんDさんEさん
身長154178166144161
配列のイメージ

配列の場合は、Aさん、Bさん、Cさん、Dさん、Eさんの身長を格納することができます。

int[] height = {154, 178, 166, 144, 161};

どうですか、意外と簡単に配列を書けますよね。

配列変数の中には、上記の配列のイメージのように5つの値が入っています。

表をイメージすると分かりやすいです。

配列の基本的な書き方

※上記の青い文字から読みたい項目へ移動することができます

①配列を宣言する方法

配列の宣言
  • 型名[] 変数名
int[] height;

変数の宣言とは違い、型名の後ろに[]が必要です。変数名の後ろに[]を書くこともできますが、型名の後ろに[]を書く方が一般的です。

②宣言された配列を初期化する方法

配列の初期化
  • 変数名 = new 型名[要素数]
height = new int[5];

既に宣言されている配列を初期化する方法です。

new int[5]とすると、配列に値を5つ入れることが出来ます。
デフォルト値である、0が5つ代入されます。

③配列の値を参照し出力する方法

配列の値を参照する方法
  • 変数名[インデックス番号]
public class App {
    public static void main(String[] args) {

        int[] height;

        height = new int[5];

        System.out.println(height[0]);
        System.out.println(height[1]);
        System.out.println(height[2]);
        System.out.println(height[3]);
        System.out.println(height[4]);
        
    }
}

出力結果

00000

配列の値を参照するには、次のように書く必要があります。

height[0]

値は5つ入っており、1番最初の値を参照するためには、[0]と書く必要があります。
[1]は2番目、[2]は3番目になります。

[0]のように書かれている数字のことを、添え字やインデックス番号と言います。

④配列の宣言と初期化を同時に行う方法

配列を宣言と同時に初期化
  • 型名[] 変数名 = new 型名[要素数]
int[] height = new int[5];

配列の宣言と初期化を同時に行うこともできます。

⑤配列の宣言と初期化と代入を同時に行う方法

配列を宣言と同時に初期化(値を代入)
  • 型名[] 変数名 = new 型名[]{値, 値, …}
  • 型名[] 変数名 = {値, 値, …}
int[] height = new int[]{154, 178, 166, 144, 161};
String[] height_string = new String[]{"154", "178", "166", "144", "161"};

new int[]の後ろに{}を書き、{}の中に値を書くと、配列の宣言、初期化、代入を同時に行うことができます。

String型の場合は、代入したい値を”(ダブルクォーテーション)で囲みます。

この時、new int[]、new String[]は省略可能です。

int[] height = {154, 178, 166, 144, 161};
String[] height_string = {"154", "178", "166", "144", "161"};

⑥配列に値の代入(追加)する方法

配列への値の代入(追加)
  • 変数名[インデックス番号] = 値
public class App {
    public static void main(String[] args) {

        int[] height = {154, 178, 166, 144, 161};

        height[0] = 999;

        System.out.println(height[0]);
        
    }
}

出力結果

999

代入したい配列のインデックス番号を指定して代入します。

多次元配列(2次元配列)の書き方

※上記の青い文字から読みたい項目へ移動することができます

①多次元配列のイメージ

配列

項目AさんBさんCさんDさんEさん
身長154178166144161
配列のイメージ

2次元配列

項目AさんBさんCさんDさんEさん
出席番号58131822
身長154178166144161
2次元配列のイメージ

配列のイメージに出席番号が加わりました。

配列の場合、身長だけが保存されていたため、誰の身長かを特定することが出来ませんでした。

出席番号が分かれば、どの出席番号の人の身長かを特定することができます。
それを実現するために2次元配列を使うことができます。

②多次元配列の宣言と初期化を同時にする方法

多次元配列を初期化する方法
  • 型名[][] 変数名 = new 型名[要素数][要素数]
int[][] sintyoA = new int[2][5];

配列の宣言と初期化は次のように行いました。

int[] height = new int[5];

多次元配列の場合は、[]の数が増えるだけです。

出席番号と身長を格納したいので左の[]は要素数が2です。
5人分のデータを格納したいので右の[]は要素数が5です。

③多次元配列の宣言と初期化と代入を同時に行う方法

配列を宣言と同時に初期化(値を代入)
  • 型名[][] 変数名 = new 型名[][]{{値, 値, …},{値, 値, …}}
  • 型名[][] 変数名 = {{値, 値, …},{値, 値, …}}
int[][] height = new int[][]{{5,8,13,18,22},{154, 178, 166, 144, 161}};

new int[][]の後ろに{{},{}}を書き、{}の中に値を書くと、配列の宣言、初期化、代入を同時に行うことができます。

この時、new int[]、new String[]は省略可能です。

int[][] height = {{5,8,13,18,22},{154, 178, 166, 144, 161}};

{5,8,13,18,22}がheight[0][]に入ります。
{154, 178, 166, 144, 161}がheight[1][]に入ります。

④多次元配列の値を参照し出力する方法

多次元配列の値を参照する方法
  • 変数名[インデックス番号][インデックス番号]
public class App {
    public static void main(String[] args) {

        int[][] height = {{5,8,13,18,22},{154, 178, 166, 144, 161}};

        System.out.println("出席番号");
        System.out.println(height[0][0]);
        System.out.println(height[0][1]);
        System.out.println(height[0][2]);
        System.out.println(height[0][3]);
        System.out.println(height[0][4]);

        System.out.println("身長");
        System.out.println(height[1][0]);
        System.out.println(height[1][1]);
        System.out.println(height[1][2]);
        System.out.println(height[1][3]);
        System.out.println(height[1][4]);
        
    }
}

出力結果

出席番号 5 8 13 18 22 身長 154 178 166 144 161

多次元配列の値を参照するには、次のように書く必要があります。

height[0][0]

出席番号はheight[0][]に入っており、身長はheight[1][]に入っています。

出席番号を取得したい場合、height[0][]の左の括弧はそのままにして、右の括弧のインデックス番号を指定します。

配列の基本操作と応用

※上記の青い文字から読みたい項目へ移動することができます

①lengthで配列の要素数を取得する方法

lengthで配列の要素数を取得する方法
  • 変数名.length
public class App {
    public static void main(String[] args) {

        int[] height = {154, 178, 166, 144, 161};

        int len = height.length;

        System.out.println(len);
        
    }
}

出力結果

5

配列の要素数を求めるためには、「height.length」と書きます。

出力結果が5になりました。
配列の要素は5個あることが分かります。

②lengthで多次元配列の要素数を取得する方法

lengthで多次元配列の要素数を取得する方法
  • 変数名.length(1次元目の要素数)
  • 変数名.length[0](2次元目の要素数)
public class App {
    public static void main(String[] args) {

        int[][] height = {{5,8,13,18,22},{154, 178, 166, 144, 161}};

        System.out.println(height.length);
        System.out.println(height[0].length);
        
    }
}

出力結果

2 5

多次元配列の要素数を求めるためには、「height.length」で1次元目の要素数を取得できます。
「height[0].length」で2次元目の要素数を取得できます。

③ループで配列の値を出力する方法

ループで配列の値を出力する方法
  • for(int i = 0; i < 配列の要素数; i++) {
    System.out.println(配列の変数名[i]);
    }
public class App {
    public static void main(String[] args) {

        int[] height = {154, 178, 166, 144, 161};

        int len = height.length;

        for(int i = 0; i < len; i++) {
            System.out.println(height[i]);
        }
        
    }
}

出力結果

154 178 166 144 161

ループでは簡潔に書いて出力することが出来ます。

④多重ループで多次元配列の値を出力する方法

ループで多次元配列の値を出力する方法
  • for(int i = 0; i < 配列の1次元目の要素数; i++) {
    for(int j = 0; j < 配列の2次元目の要素数; j++) {
    System.out.println(配列の変数名[i][j]);
    }
    }
public class App {
    public static void main(String[] args) {

        int[][] height = {{5,8,13,18,22},{154, 178, 166, 144, 161}};

        for(int i = 0; i < height.length; i++) {
            for(int j = 0; j < height[0].length; j++) {
                System.out.println(height[i][j]);
            }
        }
        
    }
}

出力結果

5 8 13 18 22 154 178 166 144 161

内側のループは、外側のループ1回につき5回ループします。
多重ループを使えば、多次元配列の値を全て取得できます。


練習問題

int型の配列を宣言し、10、11、12、13、14、15を代入し、表示してみましょう

public class App {
    public static void main(String[] args) {
        // 整数型の配列を宣言
        int[] numbers = {10, 11, 12, 13, 14, 15};

        // 配列の要素を表示
        System.out.print("配列の要素: ");
        for (int i = 0; i < numbers.length; i++) {
            System.out.print(numbers[i] + " ");
        }

        System.out.println();  // 改行
    }
}

出力結果

配列の要素: 10 11 12 13 14 15

int型の2次元配列を、自分の身長と体重で初期化し、表示してみましょう

public class App {
    public static void main(String[] args) {
        // 2次元配列を宣言して身長と体重で初期化
        int[][] heightWeightArray = {
                {170, 65}
        };

        // Person 1の身長と体重を表示
        System.out.println("Person 1: 身長=" + heightWeightArray[0][0] + "cm, 体重=" + heightWeightArray[0][1] + "kg");
    }
}

出力結果

Person 1: 身長=170cm, 体重=65kg

☜前の章へ メソッドの呼び出し方から引数と戻り値まで
☞次の章へ オブジェクト指向とクラス