配列
配列は、同じ型のデータを複数まとめて扱うためのデータ構造デス。
配列とは、同じ型のデータをまとめて格納するためのデータ構造です。
配列を使用すると、同じ型のデータを効率的に格納および処理することができます。
- 配列の宣言
- 配列の初期化
- 配列の要素へのアクセス
- 配列の要素の追加と削除
- 配列のサイズ
配列の宣言
配列を宣言するには、以下の構文を使用します。
// 型名[] 配列名;
int[] numbers;
型名
は、配列に格納するデータの型を指定します。配列名
は、配列の名前を指定します。
データ型についてはこちら↓
配列の初期化
配列を初期化する場合は、以下の構文を使用します。
// 型名[] 配列名 = new 型名[要素数];
int[] numbers = new int[10];
配列の各要素は、自動的に初期化されます。(数値型は0,boolean
型はfalse
)
この場合、10個の要素を持つ整数配列を宣言しています。
numbers に int[10] で10個の箱を作る感じ?
「順番に並んだ箱のイメージ」デスネ。
numbers = □□□□□□□□□□
要素の代入
要素の代入は、配列のインデックスを指定します。
配列名[インデックス] = [値];
int[] numbers;
numbers = new int[3];
numbers[0] = 1;
numbers[1] = 2;
numbers[3] = 3;
省略記法
基本は以下の流れで配列の宣言>>初期化>>代入ですが、
int[] numbers;
numbers = new int[3];
numbers[0] = 1;
numbers[1] = 2;
numbers[3] = 3;
省略記法があります。
// 1.型名[] 配列名 = new 型名[]{値1,値2,値3,・・・};
// 2.型名[] 配列名 = {値1,値2,値3,・・・};
int[] numbers = new int[]{1,2,3};
int[] numbers = {1,2,3};
最後のやつ、めっちゃ楽やん。
配列の要素へのアクセス
配列の要素にアクセスするには、以下の構文を使用します。
// 配列名[インデックス];
System.out.println(numbers[2]); // 3 // インデックス2の要素にアクセス
インデックス
は、アクセスする要素の番号を指定します。
この場合、インデックス2の要素にアクセスし、その値である3を出力しています。
Javaのリストは0から始まるため、最初の要素のインデックスは0です。
「並んだ箱に番号が付いているイメージ」デスネ。
numbers[3]=□0□1□2
配列の要素の追加と削除
配列の要素の追加
配列の要素を追加するには、以下の構文を使用します。
// 配列名[インデックス] = 値;
numbers[10] = 10;
インデックス
は、追加する要素の位置を指定します。
配列は宣言時に指定したサイズを超えて要素を追加することはできません。
この場合、インデックス10の位置に要素を追加します。
配列の要素の削除
配列の要素を削除するには、以下の構文を使用します。
// 配列名[インデックス] = null;
numbers[10] = null;
インデックス
は、削除する要素の位置を指定します。
配列の要素を削除する方法としては、要素をnullに設定することがあります。
nullは何もない、という意味で、何も示さないものを表します。
配列のサイズを調べる
配列のサイズを取得するには、以下の構文を使用します。
// 配列名.length;
int[] numbers = new int[10];
System.out.println(numbers.length); // 10
この場合、配列のサイズを取得します。
配列のサイズは、配列オブジェクトのlength
プロパティで取得できます。
配列イロイロ
一次元配列
一次元配列は要素が1次元のリストのような構造です。
要素はインデックスを使用してアクセスできます。
以下は一次元配列の宣言と初期化の例です。
// 配列の宣言と初期化
int[] numbers = new int[5];
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
numbers[3] = 40;
numbers[4] = 50;
二次元配列
二次元配列は表のような構造で、行と列で要素を管理します。
以下は二次元配列の宣言と初期化の例です。
// 2次元配列の宣言と初期化
int[][] matrix = new int[3][3];
matrix[0][0] = 1;
matrix[0][1] = 2;
matrix[0][2] = 3;
matrix[1][0] = 4;
matrix[1][1] = 5;
matrix[1][2] = 6;
matrix[2][0] = 7;
matrix[2][1] = 8;
matrix[2][2] = 9;
動的配列(ArrayList)
ArrayListは可変長の一次元配列のようなデータ構造です。
要素の追加や削除が容易で、サイズを動的に変更できます。
以下はArrayListの使用例です。
import java.util.ArrayList;
// ArrayListの宣言と初期化
ArrayList<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
for文の利用
for文を利用して配列を初期化することができます。
// 配列を初期化する
int[] numbers = new int[10];
for (int i = 0; i < numbers.length; i++) {
numbers[i] = i;
}
for
ループを使用して、0から9までの整数を配列numbers
の各要素に順番に代入して初期化しています。
for文めっちゃ出てくる
配列の例外
配列の例外とは、配列を操作する際に発生する実行時エラーです。
配列の例外には、以下のようなものがあります。
ArrayIndexOutOfBoundsException
配列の範囲外を参照しようとしたときに発生します。
int[] numbers = new int[10];
numbers[11] = 100; // ArrayIndexOutOfBoundsExceptionが発生する
インデックスが10しかないのに11にアクセスしようとすると。。
NullPointerException
null 参照の配列を操作しようとしたときに発生します。
int[] numbers = null;
numbers[0] = 100; // NullPointerExceptionが発生する
配列がNULL(何もない)のにアクセスしようとすると。。
NumberFormatException
数値に変換できない文字列を配列に代入しようとしたときに発生します。
int[] numbers = new int[1];
numbers[0] = "abc"; // NumberFormatExceptionが発生する
整数型の変数に文字列を代入しようとすると。。
配列の例外の処理
配列の例外を処理するには、例外処理を使用します。
例外処理を使用すると、例外が発生した場合に、適切な処理を実行することができます。
int[] numbers = new int[10];
try {
numbers[11] = 100; // ArrayIndexOutOfBoundsExceptionが発生する
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("配列の範囲外です。");
}
このコードでは、try-catch
ブロックを使用して、ArrayIndexOutOfBoundsException
をキャッチしています。catch
ブロックでは、例外が発生した場合に表示するメッセージを出力しています。
配列の例外まとめ
例外 | 説明 |
---|---|
ArrayIndexOutOfBoundsException | 配列の範囲外を参照しようとしたときに発生する |
NullPointerException | null 参照の配列を操作しようとしたときに発生する |
NumberFormatException | 数値に変換できない文字列を配列に代入しようとしたときに発生する |
注意点
- 配列の要素を追加または削除すると、配列のサイズが変更されます。
- 配列の要素を削除すると、その要素はnullになります。nullを参照すると、NullPointerExceptionが発生する可能性があります。
- 配列の要素を参照するときは、インデックスが範囲内であることを確認する必要があります。(エラーになります)
- 配列の要素を削除した後は、その要素を参照しないようにする必要があります。(エラーになります)