LoginSignup
6
4

More than 3 years have passed since last update.

【Java Silver】配列の生成方法

Last updated at Posted at 2020-10-10

配列の特徴

  • 配列はnullを許容する
  • 配列の要素数は、初期化された時に決まり、後から変更できない(要素の追加・削除不可。上書きは可能)
  • 配列はオブジェクトクラスのサブクラスなので、オブジェクト型とみなすことができる

例)

example(Object[] val);  //引数にオブジェクト型の配列を受けとる

example(Object val)  //引数に配列を受け取ることができる

配列の生成方法

【注意するポイント】

  • 変数宣言時に大かっこ[]があるか → []無し、または[]以外のカッコを使っていたらコンパイルエラー
  • 変数宣言時に要素数を指定していないか → 変数宣言時要素数を指定していたらコンパイルエラー
  • インスタンスの生成時要素数を指定しているか
  • インスタンスの生成newを記述しているか

※) new省略し、初期化子( {} )だけで配列を作ることは可能!!
- 初期化子で指定した要素の数だけ、自動的にメモリ領域を確保する。
- 初期化子が使えるのは、変数宣言と同時の時のみ
- 変数宣言と初期化を別にするとコンパイルエラー
- 配列の初期化子は、左辺のデータ型から配列のデータ型を推論する

【配列の初期化例】

int a [][] = {{1,2},{3,4}}; //newを使わず初期化子だけで配列を生成
int b [] = {};   //newを使わず初期化子だけで配列を生成。配列の中身は空だがエラーではない

int[][]c = new int [][]{}; //newと初期化子、両方使うなら[][]の中は空である必要がある

int[] d;
d = new int[]{2,3};  //配列を格納する変数を作成後、インスタンスを生成して変数に代入

int [] e = new int[3]; //要素数3のインスタンス領域を確保

【コンパイルエラーが発生する初期化例】

int[] a;
a = int[2];   //インスタンス生成時にnewを記述しておらず、インスタンスを生成できていない

int array = new int[2]; //配列型を示す[]が無い

int array[2]; //変数宣言時に要素数を指定している。

int array1 = new int[2];
array1 = {1,2};  //初期化子が使えるのは変数宣言と同時の時だけ

int[] array2= new int[3]{}; //無名配列を作るときは[]の中に要素数を記述しない

【ポイント】

  • 配列はインスタンスなので、生成しない限り使えない

  • 配列を表す変数は、配列インスタンスへの参照を保持するための器であり、変数内に配列が作られるわけでは無い。配列インスタンスの方に、扱う要素数を記述する必要がある。

6
4
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
6
4