とんちゃんといっしょ

Cloudに関する技術とか日常とかについて書いたり書かなかったり

初心者に配列を教えるための走り書き

昨日の変数に続いて配列。

配列の生成

配列の生成は以下の通り。

// 型[] 変数名 = 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