My Java環境
- java11
配列
- 同じ型や互換性のある型しか扱えない
- 要素数はインスタンス生成時、あとから変更不可
配列の宣言
- 配列の要素数は
int
型であること。 - 1次元目の要素数は省略不可。
- 多次元配列の場合は大括弧
[]
をまとめて記述する必要はない。 - 多次元配列では2次元目以降の配列の要素数を合わせる必要はない。
宣言の例
int arr[];
int[] arr1;
int[][] arr2;
int arr3[][];
int[] arr4[];
int[][] arr5[];
arr = new int[2];
arr1 = new int[2];
arr2 = new int[2][1];
arr3 = new int[1][2];
arr4 = new int[2][];
arr5 = new int[2][][];
配列インスタンスの生成
プリミティブ型の場合
int arr[] = new int[2];
上記だと、arr[0]
は0
になる。
int
の初期値は0
であるため。
要素数0
の配列
int array[] = new int[0];
- 要素数
0
でもコンパイルは通るが、array[0]
は存在しない。アクセスしようとすると例外が発生する。 -
main
メソッドの引数なし実行した場合、要素数0
の配列がargs
に設定されている。
配列の初期化
配列インスタンスの生成と同時に初期化を行う場合は{...}
を使用する。
{...}
は変数宣言と同時にしか使えない。
int arr[] = {1, 2, 3};
初期化している場合は、要素数の指定はNG。
int arr[] = new int[]{1, 2}; // OK
int arr[] = new int[2]{1, 2}; // NG
多次元配列の場合は、変数の次元数と参照先の次元数が同じであること。
int arr[][] = new int[][]{}; // OK
int arr[][] = new int[]{}; // NG
以下もOK。
int arr1[][] = {};
参照型の場合
TestBean testArr[] = new TestBean[2];
上記だと、testArr[0]
はnull
になる。
配列の宣言をしただけでは、配列インスタンスの生成をするだけで、配列の各要素を生成しているわけではない。
以下のように、初期化する必要がある。
testArr[0] = new TestBean();