【超初心者向け】Java配列の簡単な使い方


【超初心者向け】Java配列の簡単な使い方

「Javaとはなにか」「Javaのインストール方法」「Javaの正規表現」についてお伝えしてきました。今回は「Javaの配列」です。配列という言葉が数学的な響きを持っているためか、配列はプログラミング初心者がつまずきがちなポイント。しかし配列はJavaに限らずプログラミング言語に使うものなので、概念だけでもしっかり覚えておきましょう。

※画像はWindows 10 のコマンドプロンプトの画面です

image

目次
  1. 配列とは?
  2. Java配列の基本的な書き方
  3. 配列の宣言
  4. 配列のサンプルとポイント
  5. 配列に関するエラー
  6. インデックスを変数で指定
  7. for文を用いた場合
  8. forEachを用いた場合
  9. 配列の長さを取得する
  10. 多次元配列
  11. 可変長の配列はArrayList クラス
  12. まとめ

配列とは?

image 配列とは、同じ型のデータを複数格納する入れ物のことです。変数と同じように、値を代入したり参照したりします。変数には1つの値を持つのに対し、配列は複数の値を持つことができます。同じ"意味"を持つデータの集合と考えるとわかりやすいかもしれません。

例えば9教科のテストの点数を格納したい場合。 配列を使わず変数だけで表すとなると、変数を9つ定義し、それぞれに値を代入する必要が出てきます。配列の場合、1つの配列に9つの値を格納できます。

Java配列の基本的な書き方

配列の宣言

配列を使うには、まず配列を宣言します。

基本の宣言

型名 配列名[]; 配列名 = new 型名[配列の長さ];

"配列名[]"の"[]"内にはインデックス(添え字)が入ります。インデックスとは何個目かを表す数字です。

<例>

int scores[];
scores = new int[5];

宣言は int[] scores; でも int scores[]; でもどちらでも構いません。

1行にまとめて宣言

1行にまとめて書くこともできます。

型名 配列名[] = new 型名[配列の長さ];

<例>

int scores[] = new int[5];

宣言と同時に初期化

宣言と同時に値を設定するには、下記のように書きます。

型名 配列名[] = {値1, 値2... };

<例>

int scores[] = {82, 65, 47 ,100, 96};

配列のサンプルとポイント

例として、5人のテストの点数を記録する配列を作ります。

int scores[] = new int[5];

scores[0] = 82;
scores[1] = 65;
scores[2] = 47;
scores[3] = 100;
scores[4] = 96;

注意したいのは、配列の長さとインデックスの番号です。 配列の長さには要素数(個数)そのものを指定します(例でいえばint[5]の"5")。配列の長さに対し、インデックスは0から始まります(例でいえばscores[0]~scores[4])。配列の長さ5個であれば、インデックスは0から4までとなります。

<サンプルコード1>

public class ArraySample {

    public static void main(String args[]) {

        //判定する文字列
        int scores[] = new int[5];

        //配列に代入
        scores[0] = 82;
        scores[1] = 65;
        scores[2] = 47;
        scores[3] = 100;
        scores[4] = 96;

        //画面表示
        System.out.println(scores[0]);
        System.out.println(scores[1]);
        System.out.println(scores[2]);
        System.out.println(scores[3]);
        System.out.println(scores[4]);
    }
}

上記のコードでは、scoresという配列を定義し、scores[0]~[4]に数値を代入。配列の内容を画面表示しています。

<実行結果> image

配列に関するエラー

インデックスは、配列の長さ(要素数)の範囲内でなければなりません。

例えば

int scores[] = new int[5];

scores[7] = 50;

のように、配列の長さを5、インデックスに7と指定します。コンパイルの時点ではエラーになりませんが、実行してみると「java.lang.ArrayIndexOutOfBoundsException」(意味:インデックスの範囲外)というエラーが発生します。

<サンプルコード2>

public class ArraySample {

    public static void main(String args[]) {

        //配列を定義
        int scores[] = new int[5];

        //配列に代入
        scores[0] = 82;
        scores[1] = 65;
        scores[2] = 47;
        scores[3] = 100;
        scores[7] = 50;    //←ここでエラー

            //画面表示
        System.out.println(scores[0]);
        System.out.println(scores[1]);
        System.out.println(scores[2]);
        System.out.println(scores[3]);
        System.out.println(scores[7]); 
    }
}

<結果> image

インデックスを変数で指定

インデックスを変数で指定することもできます(インデックスは整数型で、long型は使用できません)。繰り返し処理と配列を組み合わせ、効率的に処理する使い方ができます。

for文を用いた場合

<サンプルコード3>

public class ArraySample {

    public static void main(String args[]) {

        //配列を定義
        int scores[] = new int[5];

        //配列に代入
        scores[0] = 82;
        scores[1] = 65;
        scores[2] = 47;
        scores[3] = 100;
        scores[4] = 96;

        //for文を用いた場合の画面表示
        for (int i = 0; i < 5; i++){
            System.out.println(scores[i]);
        }
    }
}

画面表示でfor文を用いた例です。インデックスに変数iを使い、scores[0]~scores[4]を表示させています。

<結果>

image

forEachを用いた場合

Java SE 8から追加されたStream APIを用いると、下記のように書くことができます。 結果はfor文で表示させた場合と同じです。

<サンプルコード4>

public class ArraySample {

    public static void main(String[] args) {

        //宣言と同時に初期化
        int scores[] = {82, 65, 47 ,100, 96};

               //forEachメソッドを用いた場合の画面表示
               Arrays.stream(scores).forEach(s -> System.out.println(s));
    }
}

<結果>

image

配列の長さを取得する

特にインデックスを変数で指定する場合にセットで使うことが多いのが、配列の長さを取得する構文です。

配列変数名.length

<例>

scores.length

<サンプルコード5>

lengthを用いると、サンプルコード3を以下のように書くことができます。 ここのsocores.lengthでは、5が返されています。

public class Practice1_2Class {

    public static void main(String[] args) {

        //宣言と同時に初期化
        int scores[] = {82, 65, 47 ,100, 96};

                //lengthを用いた場合(5が返される)
                for (int i = 0; i < scores.length; i++) {
            System.out.println(scores[i]);
                }
    }
}

<結果>

image

多次元配列

多次元配列とは、複数の次元で構成される配列のことです。2次元配列であれば、表のようなものと考えるとわかりやすいのではないでしょうか。

生徒名 国語 算数 理科 社会 英語
A 82 65 47 100 96
B 11 22 33 44 55
C 66 77 88 99 0

この2次元配列をJavaの配列で表現すると下記のようになります。

int scores[][] = {{82, 65, 47 ,100, 96},//Aさんの得点の配列
            {11, 22, 33 ,44, 55},    //Bさんの得点の配列
            {66, 77, 88 ,99, 0}};   //Cさんの得点の配列

可変長の配列はArrayList クラス

java.util.ArrayListは、配列の長さ(要素数)が決まっていない配列のようなクラスです。

ArrayListクラスのオブジェクトは下記のように作成します。

ArrayList<型> 変数名 = new ArrayList<型>();

<例>

ArrayList<Integer> scores = new ArrayList<Integer>();

<サンプルコード6>

import java.util.ArrayList;

public class ArraySample {

    public static void main(String args[]) {

        //配列
        ArrayList<Integer> scores = new ArrayList<Integer>();

        //配列に代入
        scores.add(82);
        scores.add(65);
        scores.add(47);
        scores.add(100);
        scores.add(96);

        //画面表示
        for (int i = 0; i < 5; i++){
            System.out.println(scores.get(i));
        }
    }
}

要素を追加するにはaddメソッド、要素を取得するにはgetメソッドを使います。上記では配列に要素を追加し、結果を表示しています。

<結果> image

ArrayListクラスについて詳しくはこちらをご参照ください。

エンジニア最強言語のJavaスキルが身に付く

無料カウンセリングはこちら

まとめ

配列を効果的に使えるようになると、他の人からもプログラムが見やすいものになります。ある程度概念が理解できたら、次は実践してコツをつかんでみてください。

image


関連記事

りもた
この記事を書いた人
りもた
まずは7日間お試し!人気プログラミング講座を無料公開中
オンライン・プログラミングレッスンNo.1のCodeCamp