SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

作って覚えるJavaプログラミングのススメ

Java入門 (2) - 値と制御構文

作って覚えるJavaプログラミングのススメ 第2回


配列について

 ここまでの変数は、原則として「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 (条件){
    ……正しいとき実行する処理……
}
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文
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の範囲でいろいろと変えて試してみてください。

(利用例)――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);
}
1~12の月の数字を変数に指定しておくと、それぞれの季節に応じてメッセージを表示する。
1~12の月の数字を変数に指定しておくと、それぞれの季節に応じてメッセージを表示する。

次のページ
繰り返し構文について

この記事は参考になりましたか?

作って覚えるJavaプログラミングのススメ連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1951 2008/08/20 12:05

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー