👩🏼🏫
【Java】配列についてまとめた
はじめに
Java Silverの受験にあたって、勉強したことをまとめました。
今回は配列!
特に、配列の作成方法・要素の代入・試験対策として覚えておくことについてまとめました。
配列の利用方法については、またどこかで…😂
配列とは
- 複数の値を、まとめて保管・管理できる仕組みのこと
- 配列の各要素には、同じ種類のデータ型しか格納できない
配列の作成方法
- 配列型変数を宣言する
- 配列インスタンスを生成し、配列型変数に代入する
1. 配列型変数を宣言する
構文
要素の型[] 配列変数名;
int[] arrayA;
2. 配列インスタンスを生成する
構文
変数名 = new データ型[要素数];
arrayA = new int[3];
※1と2を同時に行う場合
構文
データ型[] 変数名 = new データ型[要素数];
int[] arrayA = new int[3];
// 2次元配列の場合
int[][] arrayB = new int[3][3];
配列の要素に値を代入する
添え字(インデックス)を使用する
構文
変数名[インデックス] = 値;
int[] arrayA = new int[3];
arrayA[0] = 100;
arrayA[1] = 200;
arrayA[2] = 300;
// これで要素の中身ができた
配列の作成から要素の代入(初期化)まで、一気に行う場合
{}
を使用する
初期化子構文
データ型[] 変数名 = new データ型[] {値1, 値2, 値3, …};
int[] arrayC = new int[] {100, 200, 300};
newは省略できる
int[] arrayD = {100, 200, 300};
// 2次元配列の場合
int[][] arrayE = { {10, 20, 30}, {40, 50} };
この書き方が一般的?
試験対策①
[]
の位置は、データ型の後ろでも、変数名の後ろでもOK
OK
int[] arrayA;
int arrayB[];
- 2次元配列、3次元配列でも同じ
OK
// 2次元配列
int[][] arrayC;
int arrayD[][];
// 3次元配列
int[][][] arrayE;
int arrayF[][][];
[]
は、データ型の後ろと変数名の後ろに、分けて書いてもOK
OK
// コンパイルエラーにならない!
int[] arrayG[];
int[][] arrayH[];
初めて見たとき、コンパイルエラーになると思った…
試験対策②
配列の変数を宣言するとき、要素数は指定できない
NG
// コンパイルエラー
int[5] array;
OK
int[] array;
配列インスタンスを生成するときは、必ず扱える要素数を指定する
NG
int[] arrayA;
arrayA = new int[]; // コンパイルエラー
int[] arrayB = new int[]; // コンパイルエラー
OK
int[] arrayAA;
arrayAA = new int[3];
int[] arrayBB = new int[5];
試験対策③
{}
を同時に使う場合、要素数は指定できない
newと初期化子NG
// コンパイルエラー
int[] arrayC = new int[3] {100, 200, 300};
OK
int[] arrayCC = new int[] {100, 200, 300};
{}
は、変数宣言と同時にしか使用できない
初期化子NG
int[] arrayF;
arrayF = {100, 200, 300}; // コンパイルエラー
- 配列のインスタンスを作成するときに、
[]
で次元数を明示すればOK
OK
int[] arrayG;
arrayG = new int[] {100, 200, 300}; // コンパイルできる
その他の試験対策
変数とインスタンスの次元は一致させる
NG
// コンパイルエラー
int[] arrayB = new int[2][2];
扱える要素数に、浮動小数点数は指定できない
NG
// コンパイルエラー
int[] arrayA = new int[2.5];
2次元配列を作成するとき、1次元目の要素数は省略できない
NG
// コンパイルエラー
int[][] arrayB = new int[][3];
OK
int[][] arrayC = new int[3][];
arrayC[0] = new int[3];
arrayC[1] = new int[3];
arrayC[2] = new int[3];
↑ 2次元目のインスタンスを、1次元目の配列の要素として代入している
参考
Discussion