前回は「条件分岐」を扱いました。それに続いて今回は「配列」を取り上げます。
◆配列とは
配列とは、複数のデータを入れることができる入れ物のことです。
複数の値をひとつにまとめて取り扱うことができます。
扱う値はデータ型を指定して、全て同じにそろえなければいけません。
データ型[] 配列名 = { }; または
データ型 配列名[] = { };
このような構文で配列を作ります。
{ }の中には配列の要素が入ります。
では例を挙げてみましょう。
public class Sample_array { public static void main(String[] args) { int[] n = { 1, 2, 3 }; // または int n[] = { 1, 2, 3 } System.out.print(n[1]); } }
3行目で「n」という配列にint型の値、1と2と3が入れられています。
このプログラムではその中の「2」という値を取り出して出力しています。
n[1]が要素の「2」と対応しています。
配列の要素を取り出すためには[]内に要素の番号を指定してあげる必要があります。
ここで注意しなければいけないのが「要素番号は0から数える」ということです。
つまり
1 → n[0] 2 → n[1] 3 → n[2]
という対応になります。
ではもう一つ、要素を配列に入れる方法を紹介します。
public class Sample_array_2 { public static void main(String[] args) { int[] n = new int[3]; n[0] = 1; n[1] = 2; n[2] = 3; System.out.print(n[0]); } }
このような書き方もあります。
3行目で配列nがnew演算子でインスタンス化されています。
(インスタンス化はまだ別の機会に取り上げますので、ここでは「このような書き方もあるんだな」程度に留めておいてください。)
この書き方を使うと配列の要素の数をあらかじめ決めておくことができます。
要素数だけ決め、そのあとに具体的な値を入れていくといった方法です。
◆配列の仕組み
配列は参照型に分類されます。
参照型の値は変数の中ではなく、別の倉庫(PCのメモリ上)に入っています。
参照型の変数には直接値が入っているわけではないのです。
入っているのは、「値がどこにあるのか」という「住所」です。
変数という箱に、値が実際にある住所があり、その住所を参照して値をとってくる。
これが「参照型」の意味になります。
では具体的な値が入れられる前、newで作った配列には何が入っているのでしょうか?
public class Sample_array_3 { public static void main(String[] args) { int[] i = new int[3]; boolean[] b = new boolean[3]; String[] s = new String[3]; System.out.println("i[0] : " + i[0]); System.out.println("b[1] : " + b[1]) System.out.println("s[2] : " + s[2]); } }
このプログラムを実行すると何と表示されるでしょう?
答えは
i[0] : 0
b[1] : false
s[2] : null
と表示されます。
配列には値がデフォルトの値が設定されています。
整数・・・0
浮動小数点数・・・0.0
論理値・・・false
オブジェクト参照型(String型など)・・・null(参照先が空っぽ)
具体的な値を代入していないと、上に示されているデフォルトの値が表示されます。
◆演習問題
配列の要素の数を求めるには
配列変数.length(例:n.length)
を用いて個数を取り出します。
では、
Q.1から10までの整数の合計値を、配列と「for文」と「複合代入演算子」を用いて求めなさい。
第1回では「複合代入演算子」、第2回では「for文」についてやりましたね。その復習も兼ねて問題に取り組んでみて下さい。
次回は、問題の解説をします。