配列

スポンサーリンク
アイキャッチjava All

配列とは何か?

Javaの配列は、同じデータ型の複数の値を保存するための箱のようなものです。

例えば、テストの点数を保存する場合、1人分の点数を変数として保存するのではなく、複数人の点数を配列として保存することができます。

10人分の点数を保存する場合、10個の変数を用意するのではなく、1つの配列に10人分の点数を保存することができるというわけです。

配列の宣言と初期化方法

配列の宣言

配列を宣言するとは、その配列を使用するために必要なメモリ領域を確保することを意味します。

配列を宣言するには、以下のような形式で記述します。

配列の宣言
要素の型[] 配列名;

例えば、int型の配列を宣言する場合は、以下のように記述します。

public class Sample {
    public static void main(String[] args) {
        int[] scores; //int型の配列の宣言
    }
}

配列の初期化

配列を初期化するとは、配列に要素を代入することを意味します。

配列の初期化には、以下のような方法があります。

要素数を指定して初期化する方法

要素数を指定して初期化する場合、以下のように記述します。

配列の初期化 要素数を指定
要素の型[] 配列名 = new データ型[要素数];
要素数とは?

配列に格納できるデータの数を表します。

例えば、3つの整数を保存する配列がある場合、その配列の要素数は3になります。

たとえば、整数型の配列を要素数10で初期化する場合は、以下のように記述します。

public class Sample {
    public static void main(String[] args) {
        int[] scores = new int[10]; //int型の配列配列を要素数10で初期化
    }
}

初期値を指定して初期化する方法

初期値を指定して初期化する場合、以下のように記述します。

配列の初期化 要素数を指定
データ型[] 配列名 = {初期値1, 初期値2, 初期値3, ...};

たとえば、整数型の配列を初期値1から順に10個の要素を持つ配列を初期化する場合は、以下のように記述します。

public class Sample {
    public static void main(String[] args) {
        //int型の配列を初期値1から順に10個の要素を持つ配列を初期化
        int[] scores = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    }
}

配列の要素数の取得方法

配列に格納されている要素の数について調べる方法について紹介します。

配列の要素数を取得するために、lengthを使用します。

配列の要素数の取得方法
配列名.length;

以下に、配列の要素数を取得するためのコード例を示します。

public class Sample {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};
        int length = numbers.length;
        System.out.println("配列の要素数は " + length + " です。"); //「配列の要素数は 5 です。」が出力
    }
}

配列の要素のアクセス方法

配列には複数の要素が格納されており、それぞれの要素には番号が割り振られています。

配列の要素にアクセスするには、その要素の番号を指定します。

以下に、配列の要素のアクセス方法についてまとめます。

  • 配列名[番号] の形式で、要素にアクセスします。
  • 番号は0から始まります。つまり、最初の要素は0番目、次の要素は1番目というようになります。
配列の要素のアクセス方法
配列名[番号] ;

実例:

以下の例では、numbersという配列に5つの要素が格納されています。

それぞれの要素にアクセスして、値を表示しています。

public class Sample {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};
        System.out.println(numbers[0]); // 10が出力される
        System.out.println(numbers[2]); // 30が出力される
        System.out.println(numbers[4]); // 50が出力される
    }
}

上記の例では、numbers[0]は最初の要素である10にアクセスしています。

同様に、numbers[2]は3番目の要素である30にアクセスし、numbers[4]は最後の要素である50にアクセスしています。

配列の要素にアクセスする際は、適切な番号を指定することが重要です。

番号は要素の位置を示しており、正しい位置を指定しないと意図した結果が得られません。

配列の注意点

要素は0から始まる

配列では、要素の番号が0から始まることに注意が必要です。

つまり、最初の要素は0番目となります。

このため、要素へのアクセスや操作を行う際には、0から始まる番号を使用する必要があります。

実例:

以下は、numbersという配列を例に挙げたコードです。配列の要素には、0から順にアクセスできます。

public class Sample {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};

        int firstElement = numbers[0]; // 0番目の要素にアクセス
        int thirdElement = numbers[2]; // 2番目の要素にアクセス
        int lastElement = numbers[4]; // 最後の要素にアクセス

        System.out.println(firstElement); // 10が出力される
        System.out.println(thirdElement); // 30が出力される
        System.out.println(lastElement); // 50が出力される
    }
}

上記の例では、要素の指定ミスがないため、正常に動作します。

しかし、例えば最後の要素に間違えて「4」ではなく「5」を指定すると、

「ArrayIndexOutOfBoundsException」という配列の番号が範囲外であるよというエラーを表示します。

public class Sample {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};

        int firstElement = numbers[0]; // 0番目の要素にアクセス
        int thirdElement = numbers[2]; // 2番目の要素にアクセス
        int lastElement = numbers[5]; // 最後の要素にアクセスしたいが要素は0〜4のためエラーとなる

        System.out.println(firstElement); 
        System.out.println(thirdElement); 
        System.out.println(lastElement); 
    }
}

配列は同一種のデータ(同じデータ型を格納するためのものです。

つまり、1つの配列には、整数や文字列など、同じデータ型の要素だけを格納することができます。

異なるデータ型の要素を混在させることはできません。

実例:

以下は、numbersという配列を例に挙げたコードです。この配列には整数の要素が格納されています。

public class Sample {
    public static void main(String[] args) {
        //int型の配列を初期値1から順に10個の要素を持つ配列を初期化
        int[] scores = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int firstElement = numbers[0]; // 整数型の要素にアクセス
        int sum = numbers[1] + numbers[2]; // 要素同士の計算
    }
}

上記の例では、すべての要素が整数型であるため、正常に動作します。

しかし、例えば文字列を含む配列に整数を格納しようとすると、エラーが発生します。

public class Sample {
    public static void main(String[] args) {
        String[] names = {"Alice", "Bob", "Charlie"};
        names[0] = 10; // エラー! 異なるデータ型の要素を格納しようとしている
    }
}

このように、配列では同一種のデータ型の要素を使用する必要があります。

  • 配列の要素は0から始まる。
  • 配列には同一種のデータ型の要素を格納することができる。

配列のデータをまとめて取得する方法

for文を使用

配列に格納されている複数のデータを効率的に取得するためには、for文を使用する方法があります。

以下に、配列のデータをfor文でまとめて取得する方法についてまとめます。

  • 配列の要素数(配列名.length)を取得し、その数だけループを回します。
  • ループ内で、現在の番号に対応する配列の要素を取得します。
  • 取得したデータを処理するために、変数に代入したり、直接使用したりします。

実例:

以下の例では、numbersという配列に5つの要素が格納されているとします。

これらの要素をfor文を使って取得し、順番に表示しています。

public class Sample {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};
        for (int i = 0; i < numbers.length; i++) {
            System.out.println(numbers[i]); //10,20,30,40,50の順で出力
        }
    }
}

上記の例では、numbers配列の要素を順番に取得するために、forループが使用されています。

ループは0から始まり配列の長さ(numbers.length)未満の範囲でループが回ります。

ループ内で、numbers[i]によって現在の番号に対応する要素が取得され、System.out.println()を使ってその要素が表示されます。

この方法を使うことで、配列の要素をまとめて取得し、それぞれの要素を処理することができます。

拡張for文

拡張for文(またはfor-each文)は、要素を簡単に順番に取得するための超便利なfor文です。

拡張for文
for (データ型 変数名 : 配列) {
    // 処理
}

実例:

拡張for文を使用すると、配列のデータを簡単にまとめて取得することができます。

具体的な方法を以下に示します。

1.配列を準備します。

int[] numbers = {10, 20, 30, 40, 50};

2.拡張for文を使って配列のデータをまとめて取得します。

for (int number : numbers) { // numberに配列の要素が順番に代入される
    // 処理 
}

3.処理の中で取得したデータを利用します。

for (int number : numbers) {
    System.out.println(number); // 配列の要素を表示する例
}

以下の実例では、配列 numbers の要素を拡張for文を使ってまとめて取得し、それぞれの要素を表示しています。

public class Sample {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};

        for (int number : numbers) { //numberに配列の要素が順番に代入される
            System.out.println(number); //10,20,30,40,50の順で出力
        }
    }
}

拡張for文のメリット

インデックスの管理が不要

拡張for文では、ループのたびに番号を意識する必要がありません。

代わりに、配列の要素が直接変数に代入されます。

これにより、ループ内の処理がよりシンプルになります。

シンプルなコードの記述

拡張for文は、ループの回数や終了条件などを自動的に処理してくれるため、コードの記述が簡潔になります。

配列の要素に対して順番にアクセスするだけで済むため、冗長なコードを避けることができます。

エラーの可能性を低減

拡張for文では、配列の範囲外にアクセスするなどのエラーを起こす可能性が低下します。

番号の管理が自動的に行われるため、番号を指定するというミスが発生しにくくなります。

コメント

タイトルとURLをコピーしました