昨日の変数に続いて配列。
配列の生成
配列の生成は以下の通り。
// 型[] 変数名 = new 型[要素数]; int[] x = new int[5];
分けて書くことも可能
// 型[] 変数名; // 変数名 = new 型[要素数]; int[] x; x = new int[5];
最初から値を与える場合
// 型[] 変数名 = {値, 値, ...}; int[] x = {1 , 2, 3};
ただし型宣言と一緒じゃないとエラーになる
int[] x; x = {1 , 2, 3}; // error
配列の参照と代入
配列へのアクセスは0〜(配列.length-1)の添え字でアクセスする。
それ以外のところにアクセスするとエラー
int[] x = {1 , 2, 3}; // 変数名[添字]; System.out.println(x[0]); // => 1 System.out.println(x[1]); // => 2 System.out.println(x[2]); // => 3 System.out.println(x[3]); // => error System.out.println(x[-1]); // => error
代入も参照と同様に配列の"変数名[添字]"をつかう
// 変数名[添字]; x[0] = 0; x[1] = 1; x[2] = 2;
プログラミングを始めたばかりのころは配列へのアクセスを1〜要素数でアクセスして、
よくエラー落ちする。
0からアクセスする理由は多分コンピュータ0,1の2進数で値を持っているため、
カウントが0から始まるためだと思う。
代入で特殊だなと思わせるのは配列へ配列を渡したとき。
int[] x = {1, 2, 3}; int[] y = x; // yの要素参照 System.out.println(y[0]); // => 1 System.out.println(y[1]); // => 2 System.out.println(y[2]); // => 3 // yの要素に代入 y[0] = 0; y[1] = 1; y[2] = 2; // xの参照 System.out.println(y[0]); // => 0 System.out.println(y[1]); // => 1 System.out.println(y[2]); // => 2
配列に配列を代入した場合は値のコピーではなくて、
配列の参照先をコピーしているので扱う場合には注意が必要。
配列の長さ
配列の長さは初期段階から変更不可能。
配列の長さが知りたかったら
int[] x= new int[5]; System.out.println(x.length); // => 5