Javaの配列とついてまとめました。
配列とは・・
同じデータ型をまとめて扱うときに使う値の集合のこと
配列に格納するのは、基本データ型、参照型のどちらも可能
ただし、配列自体は参照型
1度設定した配列の範囲は変えられない
配列の範囲外へアクセスするとエラーになる
配列の作成方法
作成方法は以下のように3つパターンがあります。
⑴ 配列型変数の宣言と、領域の確保を別々に行う
int [ ] id;
id = new int [50];
⑵ 配列型変数の宣言と、領域の確保を同時に行う
int [] id = new int [50];
(3) 配列型変数の宣言と、領域の確保、初期化まで行う
int [] array = {10, 20, 30};
※初期化子は、変数宣言と同時にしか使えない。次のようなコードはエラーになる。
int [] array;
array = {10,20,30};
配列へ値を代入する
値を入れるには、添字を指定する。添字は0から始まる。
例1 1つ1つ代入する。
int [] id = new int [3];
id [0] = 100;
id [1] = 101;
id [2] = 103;
例2 まとめて代入する。
int [] = new int [] {100,101,102};
例3 短い起票方法
int [] array = {10, 20, 30};
それぞれの型による配列の宣言
char[] c;
c = new char[3];
c[0] = ‘A’; c[1] = ‘B’; c[2] = ‘C’;
// char [] c = new [3] {‘A’ , ‘B’ , ‘C’}; //宣言と初期化を同時に行う
int [] i = new int [3];
i [0] = 100; i [1] = 101; i[2] = 102;
//int [] i = new [3] {100, 200, 300}; //宣言と初期化を同時に行う
String str [] = {“Welcome”, “to”, “Japan”};
System.out.println(str.lenght);
※ int i; と宣言して、i の値を画面表示させると、エラーになるが、配列の場合はint型ならば0のように表示される。これは、配列を宣言するとデータ型に合わせて初期化が行われるから。
配列の初期値
byte, short, int, long → 0
float, double → 0.0
char → ¥u0000
boolean → false
参照型 → null
多次元配列
記述例
int [] [] array;
array = new int [3] [4] ;
array [0][0] = 100;
array [0][3]= 200;
int [][] array2 = new int[3][4];
配列の宣言、領域の確保、値の代入を1度に行う
int [][] array3 {
{10, 20, 30, 40},
{50, 60, 70, 80},
{55, 56, 57, 58}
};
要素数が不揃いな配列の宣言
int [][] array4 = new int [3][];
array4[0] = new int[3];
array4[1] = new int[5];
array4[2] = new int[2];
int[][] array4 = {
{1,2,3},
{10,20,30,40,50},
{100,200}
};
System.out.println(array[0][0]);
※実行結果
1
■補足
・配列型とint型には互換性がない。そのため、下記のコードはエラーになる。
int [] array = 10;
・配列を扱うための変数を宣言しなければならないが、この時のデータ型は配列型となる。そして変数の宣言は配列型変数となる。
※ややこしいところ
配列型変数とは、値の集合である配列が入るための変数に過ぎない。
配列型変数を宣言しただけでは値の集合を扱うことはできない。
この値の集合を扱うものこそが配列である。
変数宣言は配列そのものを作るわけではない。
変数はあくまでメモリアドレスに対して別名をつけただけのも。
だから、配列型変数の宣言をしている箇所で要素数を指定することはできない。
そのことを確かめるコード↓
int [] arrray = new int [3];
array = new int[5];
このコードの1行目では、3つのint型の要素を持った配列を作り、int型だけを扱う配列型変数arrayに代入している。その後、2行目で新しくint型の要素を5つ持った配列を作り、もう一度代入している。
つまり、配列型変数が要素を持つのではなく、あくまでも配列そのものが要素を持っていて、その配列を扱うために配列型変数を使っているに過ぎないということ。
■ちょっとテスト
int i = 0;
int [] array = new int [3];
i = array.length;
array[0] = 100;
array[1] = 200;
array[2] = 300;
System.out.println(“i = :” + i);
for(int i=0; i<array.length : i++){
System.out.println(“array[“+ i “] =” + array[i]);
}
array = new int[5];
i = array.length;
System.out.println(“i = :” + i);
for(int i=0; i<array.length : i++){
System.out.println(“array[“+ i “] =” + array[i]);
}
■実行結果
i = :3
array[0] =100
array[1] =200
array[2] =300
i = :5
array[0] =0
array[1] =0
array[2] =0
array[3] =0
array[4] =0
※要素は配列本体が持っているものであり、配列型変数が持っているものではない。
■もう一つテスト
int i = 0;
int [] array = new int [3];
i = array.length;
System.out.println(“i = :” + i);
array = new int[5];
i = array.length;
System.out.println(“i = :” + i);
実行結果
i = :3
i = :5
まとめ
最近勉強しているJavaについて簡単にまとめてみました。
間違っているところがあればコメントに書き込んでいただいてかまいません。よろしくお願いします。
次は『ArrayListクラス』についてまとめたいと思います。
以上
ではまた(^^)