配列とは
配列とは、同じ型のデータを複数扱うことのできる機能のことです。
配列を使用するためには次の2つが必要になります。
- 配列にアクセスするための変数を宣言する
- 配列の実体を生成する
形式は次の通りです。
型名 配列変数名[];
配列変数名 = new 型名[要素数];
配列変数の初期化処理で実体生成すれば1行で書くこともできます。
型名 配列変数名[] = new 型名[要素数];
配列へのアクセス
配列へアクセスするためには[添え字]を記述します。
添え字は0~要素数-1の数値になります。
要素数を超えてアクセスした場合はエラー(例外)が発生しますので注意が必要です。
記述例:
public class CL1{
public static void main(String args[])
{
int ary[]; // 配列変数の宣言
ary = new int[3]; // 配列の実体の生成
ary[0] = 10; // 配列へのアクセス
ary[1] = 20;
ary[2] = 30;
for(int i=0; i<3; i++){
System.out.println("ary["+i+"] = "+ary[i]);
}
}
}
ary[0] = 10
ary[1] = 20
ary[2] = 30
配列変数の初期化
配列変数の宣言時に処理化することで、配列変数の宣言・実体生成・初期化が全て処理されます。
形式は次の通りです。
型名 配列変数名[] = {値, 値, 値, ...};
値の数だけ要素が生成されます。
記述例:
public class CL2{
public static void main(String args[])
{
int ary[] = {10, 20, 30};
for(int i=0; i<3; i++){
System.out.println("ary["+i+"] = "+ary[i]);
}
}
}
ary[0] = 10
ary[1] = 20
ary[2] = 30
配列変数と実体の関係
配列変数は配列へアクセスするための変数なので、配列変数を別の配列変数に代入した場合には配列の実体は生成されず、[配列へのアクセス]が代入(コピー)されます。
記述例:
public class CL3{
public static void main(String args[])
{
int ary1[] = {10, 20, 30};
int ary2[] = ary1; // 配列変数の代入(実体は同じ)
System.out.println("・ary2 = ary1");
for(int i=0; i<3; i++){
System.out.println("ary1["+i+"] = "+ary1[i]);
System.out.println("ary2["+i+"] = "+ary2[i]);
}
ary2[1] = 40;
System.out.println("・ary2[1] = 40");
for(int i=0; i<3; i++){
System.out.println("ary1["+i+"] = "+ary1[i]);
System.out.println("ary2["+i+"] = "+ary2[i]);
}
}
}
・ary2 = ary1
ary1[0] = 10
ary2[0] = 10
ary1[1] = 20
ary2[1] = 20
ary1[2] = 30
ary2[2] = 30
・ary2[1] = 40
ary1[0] = 10
ary2[0] = 10
ary1[1] = 40
ary2[1] = 40
ary1[2] = 30
ary2[2] = 30
配列の実体をコピーしたい場合は、配列変数.clone()を実行します。
記述例:
public class CL4{
public static void main(String args[])
{
int ary1[] = {10, 20, 30};
int ary2[] = ary1.clone();
ary2[1] = 40;
for(int i=0; i<3; i++){
System.out.println("ary1["+i+"] = "+ary1[i]);
System.out.println("ary2["+i+"] = "+ary2[i]);
}
}
}
ary1[0] = 10
ary2[0] = 10
ary1[1] = 20
ary2[1] = 40
ary1[2] = 30
ary2[2] = 30
配列の要素数
配列の要素数は別の変数に記憶させておく必要はありません。
.lengthで要素数を取得することができます。
記述例:
public class CL5{
public static void main(String args[])
{
int ary[] = {10, 20, 30};
for(int i=0; i<ary.length; i++){
System.out.println("ary["+i+"] = "+ary[i]);
}
}
}
ary[0] = 10
ary[1] = 20
ary[2] = 30
多次元配列
これまで解説した配列は1次元配列と呼ばれるものです。
配列の配列のことを2次元配列と呼びます。
2次元以上の配列のことを多次元配列と呼びます。
変数が点、1次元配列が線、2次元配列が面のイメージです。
2次元配列の形式は以下の通りです。
型名 配列変数名[][] = new 型名[要素数1][要素数2]
初期化など、1次元配列と同じように記述できます。
記述例:
public class CL6{
public static void main(String args[])
{
// [2][3]の配列を宣言
int ary[][] = {{10, 20, 30},{100, 200, 300}};
for(int i=0; i<ary.length; i++){ // 1次元目の配列の大きさ
for(int j=0; j<ary[i].length; j++) // 2次元目の配列の大きさ
System.out.println("ary["+i+"]["+j+"] = "+ary[i][j]);
}
}
}
ary[0][0] = 10
ary[0][1] = 20
ary[0][2] = 30
ary[1][0] = 100
ary[1][1] = 200
ary[1][2] = 300
次元を増やしたい場合は、[]の数を増やせばOKです。
コメント