👩🏼‍🏫

【Java】配列についてまとめた

2022/02/25に公開

はじめに

Java Silverの受験にあたって、勉強したことをまとめました。

今回は配列!
特に、配列の作成方法・要素の代入・試験対策として覚えておくことについてまとめました。
配列の利用方法については、またどこかで…😂

配列とは

  • 複数の値を、まとめて保管・管理できる仕組みのこと
  • 配列の各要素には、同じ種類のデータ型しか格納できない

配列の作成方法

  1. 配列型変数を宣言する
  2. 配列インスタンスを生成し、配列型変数に代入する

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次元目の配列の要素として代入している

参考

https://honto.jp/isbn/978-4-295-00762-3?partnerid=aftoc1904996260&booktype=ebook
https://honto.jp/isbn/978-4-7981-6204-1?partnerid=aftoc1904996260&booktype=ebook

Discussion