0
0

More than 3 years have passed since last update.

あたまのなかの整理メモ(Java - 配列編)

Last updated at Posted at 2020-03-08

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();
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0