配列(基本)
今回は配列についてみていきます。
配列とは
配列はプログラミングにおけるデータ構造の一つです。
配列はデータの集合であり、添え字でインデックスされたものを指します。古典的なプログラミング言語では同じデータ型の集合に限定されるが、比較的新しい言語や多くの高水準言語では異なった型も格納することができます。
※wikipedia参考・引用

プログラムの処理中には計算結果やデータベースからの情報など様々なデータを保存しておく必要があります。その代表的なものに「変数」がありますが、変数には1つの値しか格納できない為、例えば5人の名前を格納するには 「name1 , name2 , ・・・・name5」など5つの変数を準備する必要があります。そこで同じデータ型である複数のデータに対して1つの名前で一括管理する方法が「配列」です。配列を用いることにより別々の名前の変数を準備する必要がなくなります。
上記の図では配列に「name」という名前をつけています。配列nameには5つデータを保存する為の箱(領域)が準備されています。それぞれの箱のことを「要素」とよび、それぞれの箱には「添え字」という識別番号があります。nameというグループの箱の集りのうち、添え字が1番の箱の中身は「次郎」という感じです。
Javaでは添え字は「0」から始まります。添え字はインデックスともよばれます。またJavaでは配列のすべての要素のデータ型は同じでなければなりません。
参照と配列変数
参照は、他の場所にあるデータを指している情報を含む小さなオブジェクトであり、それ自身の中にデータ自体を含まない。参照の指す値を取り出すことをデリファレンス (dereference)と呼ぶ。参照は様々なデータ構造を構成する基本要素であり、プログラム内の各部で情報をやり取りするための基本でもある。
参照は家の住所に似ている。住所は非常に小さな識別子であり、それが指しているモノにはさらに豊富な情報があるだろう。例えば、その家を見れば色がわかる が、住所だけでは色はわからない。住所は単に家を見つけることを可能にするだけである。しかし、もし家の色が知りたければ、住所さえあれば見つけ出して実 際にその家を見ればよい。つまり、住所は家の色を知るための充分な情報源となる。住所から家を探すことは、参照をデリファレンスすることに似ている。
※wikipedia参考・引用

Javaでは配列を参照型として扱います。配列そのもの(オブジェクト)を作る前にまず配列のアドレス情報を格納する為の箱を準備する必要があり、その箱を配列変数とよびます。
Javaでは配列を生成する為には
- 配列変数を宣言する
- 配列オブジェクトを生成する
の2段階の作業が必要です。
配列変数の宣言と配列オブジェクトの生成
上記で説明したとおり、Javaではまず配列変数を宣言して配列オブジェクトのアドレス情報を格納する為の準備をします。そして配列オブジェクトを生成してアドレスを取得し、配列変数にそのアドレスを代入します。これで配列変数と配列オブジェクトが紐付けられた為、次からは配列変数を通して配列オブジェクトから値を取得したり書き込むことができます。
public class sample01 {
public static void main(String[] args) {
int[] array;
array = new int[3];
array[0] = 10;
array[1] = 20;
array[2] = 30;
for(int num : array){
System.out.print(num + ":");
}
}
}
型[] 配列変数名 または 型 配列変数名[]
![]()
3行目で配列変数を宣言しています。
サンプルでは整数型のデータを格納する配列を扱いたいので int[] 、配列変数名は array としました。配列であることを表す[] は型の後ろにつけても配列変数名の後ろにつけても構いません。この段階ではまだ配列そのものはできてません。ですので配列変数を宣言していきなり5行目のように「array[0] = 10;」と値を代入しても、配列領域が確保されていないのでエラーになります。
配列変数名 = new 型[要素数];

4行目で配列オブジェクトを生成し、オブジェクトのアドレスを配列変数に代入しています。
サンプルでは整数型のデータを格納する配列を扱いたいので型はintです。配列変数の型と同じになるはずです。要素数は3つにしたいので [3]としました。これでint型の領域が3つ準備されました。new はオブジェクトを生成し、生成したオブジェクトのアドレスを返します。
配列変数名[添字」 = 値;

5行目から7行目で配列に値を代入しています。配列変数名[添字]で配列内のどの箱に値を代入するのか指定できます。
8行目から10行目で配列内の値を表示しています。拡張for文については「繰り返し処理 (拡張for)」の記事を参考にしてください。
2010 年 4 月 24 日 土曜日 【 カテゴリー: Javaの基本 】
