配列について
ここまでの変数は、原則として「1つの変数に1つの値」を収めるものでした。が、時には、一度に多数の値をまとめて利用したいという場合もあります。このような場合に用いられるのが「配列」と呼ばれるものです。
配列とは、同種の値を複数まとめて管理できるものです。1つ1つの値が保管される場所には「インデックス」と呼ばれる番号が割り付けられており、これを使って特定の要素の値を取り出したり変更したりすることができます。配列の基本的な利用法について以下にまとめておきましょう。
タイプ[] 変数 = new タイプ[個数]; タイプ[] 変数 = new タイプ[]{値1, 値2,……}; タイプ[] 変数 = {値1, 値2,……};
配列[番号] = 値; 変数 = 配列[番号];
配列の作成は、変数の作成と似ています。違うのは、[ ]という記号が使われている点です。例えば、整数(int型)の値を10個収められる配列ならば、
int[] arr = new int[10];
というようにして作成をします。これで配列が作成され、変数arrに設定されます。もし、最初から配列に収めておく値がわかっているならば、それらを指定して作成することも可能です。
int[] arr = new int[]{1,2,3}; int[] arr = {1,2,3};
例えばこのようにすれば、1, 2, 3という3つの値をもつ配列が作成されます。2通りの書き方をあげましたが、どちらの書き方を使ってもかまいません。もちろん、先にnew int[10]として作成し、それから1つ1つの値を設定していくことも可能です。この場合は、
arr[1] = 1;
このようにして[]に番号を指定して、何番目の要素を扱うかを決めます。ここで注意したいのは、「番号は、ゼロから始まる」という点でしょう。最初の値はarr[0]に入っており、2番目がarr[1]、3番目がarr[2]……という具合に収められていくのです。
まぁ、この配列は、実際にそれが必要となってみないと使い方がわからないかもしれません。このあとの「繰り返し」構文とあわせて使うと、便利さが実感できるようになるでしょう。
条件分岐構文について
「変数」「値」に続いて覚えるべき重要な文法は、「制御構文」でしょう。プログラムでは、実行する処理をさまざまな形で制御する必要があります。そのための構文が制御構文です。制御構文には、大きく分けると2つのものがあります。1つは「条件分岐」、もう1つは「繰り返し」です。
まずは条件分岐から説明しましょう。これは、条件となるものをチェックし、その値に応じて実行する処理を変えるために使われるものです。これには「if文」と「switch文」というものがあります。
if文
条件となる式が用意されており、その結果を調べて、それが成立するかどうかに応じて実行する処理を変えることができます。これはいくつかの書き方ができますが、基本的には次の2通りに整理できるでしょう。
if (条件){
……正しいとき実行する処理……
}
if (条件){ ……正しいとき実行する処理…… } else { ……正しくないとき実行する処理…… }
ifの後に、(条件)というものがありますね。この( )の中に、条件となる式を記述します。この条件は「値が真偽値として取り出せるもの」を使います。と言うと分かりにくいでしょうが、ざっと次のようなものです。
booleanの値や変数- 比較演算子というものを使って書かれた、値を比較する式
- 結果が
booleanで得られるメソッドなど
比較演算子というのは「A > B」というように2つの値の大きさを比較するものです。これは次のようなものがあります。
| == | 右辺と左辺が等しい |
| != | 右辺と左辺が等しくない |
| < | 左辺より右辺が大きい |
| <= | 左辺より右辺が大きいか等しい |
| > | 左辺より右辺が小さい |
| >= | 左辺より右辺が小さいか等しい |
これらを使った式で条件を記述して、その式が正しいかどうかで処理を変えるわけです。では、以下に簡単なサンプルをあげておきましょう。変数xの値をいろいろと書き換えて動作を確認してみてください。
public static void main(String[] args){ int x = 123; // 調べる値 String msg = ""; if (x % 2 == 0){ msg = "偶数であります。"; } else { msg = "奇数ですとぉ!"; } System.out.println(msg); }

switch文
これは分岐のための値が用意されており、その値に応じて特定のところにジャンプする働きをする構文です。書き方は次のようになります。
switch (チェックする値){ case 値1: ……実行する処理…… break; case 値2: ……実行する処理…… break; ……必要なだけcaseを用意する…… default: ……すべてに当てはまらないときの処理…… }
switchの後にある( )内の値をチェックし、その後の{ }内にある「case 値:」という部分から、同じ値を探します。もし、同じ値が見つかれば、そのcaseにジャンプし、その後にある処理を実行します。もし、同じ値のcaseが見つからなければ、defaultにジャンプします。defaultがない場合は、そのまま何もしないで構文を抜けます。
ここで利用できる値は、整数か文字(char)のみです。実数や、Stringなどのオブジェクトの値は利用できません。意外と使い方は限られているのです。
注意したいのは、「この構文は、ただジャンプするだけの働きしかない」という点です。「case 値:」にジャンプし、そこにある処理を実行したら、次の「case」の直前に構文を抜け出す……なんてことはやってくれないのです。そのままでは、次にあるcaseも、その次のcaseも、ずらずらと実行していってしまいます。
そこで、処理が終わったら、「break」というものを用意して、そこで構文を抜けるようにしておくのが基本です。breakは、現在実行中の構文から抜け出す働きをする予約語です。これにより、「ここで構文を抜けて、switchの次に進む」ということをさせているのです。では、これも簡単な例を挙げておきましょう。変数tsukiの値を1~12の範囲でいろいろと変えて試してみてください。
public static void main(String[] args){ int tsuki = 11; // 1~12までの整数 if (tsuki >= 12){ tsuki = 0; // 12月はゼロにする } String msg = ""; int kisetsu = tsuki / 3; switch(kisetsu){ case 0: msg = "冬はキライであります。"; break; case 1: msg = "春はあけぼの、であります。"; break; case 2: msg = "夏は夜、であります。"; break; case 3: msg = "秋は夕暮れ、であります。"; } System.out.println(msg); }

