【Java入門】for文について
  • facebookページ
  • twitterページ
  • 2017.09.09

    【Java入門】for文について

    Java言語の繰り返し処理

    コンピュータのプログラムの処理には、大きく分けて、順次処理(じゅんじしょり)、分岐処理(ぶんきしょり)、繰り返し処理という、3種類の処理によって構成されています。

    もちろん、Java言語も例外ではありません。Java言語にも、繰り返し処理の命令が備わっています。
    繰り返し処理は別名ループ処理と言い、決められた回数、もしくは無制限に指定された処理繰り返す処理をさします。

    ここでは、その中の一つであるfor文について説明していくことにします。

    for,while,do while

    for文について説明する前に、Java言語で用いられる繰り返し処理についての概要を説明しましょう。

    Java言語は、C言語の影響を強く受けて作られた言語です。そのため、繰り返し処理も、C言語と同じものが用意されています。それが、while文、do~while文、およびfor文です。

    この中で、もっとも使用頻度が高いのが、最後に説明したfor文です。

    たとえば、以下のようなプログラムを実行してみてください。

    すると、画面に「0 1 2 3 4」という文字列が表示されます。実行結果から判るとおり、for文の中にある表示処理が繰り返されて、この結果が得られたことが判ります。

    for文の仕組み

    では、一体for文はどのような仕組みになっているのでしょうか。for文の書式は、以下の通りになっています。

    for ( 初期化処理 ; 条件式 ; 増分処理 ){
    処理
    }

    前述のサンプルにあてはめてみると、初期化処理の部分で「i = 0」としています。

    そのため最初はiの値は0から始まることがわかります。

    続いて条件式ですが、if文で用いられるものと同じもので、この場合「i< 5」ですから、iが5未満の場合、この処理は継続されるます。

    最後に増分処理には「i++」となっていますが、これは、インクリメントと言って、iの値を1増加させる処理なのです。

    つまり、このfor文は、i=0から始めて、iを一つずつ増分させ、iが5未満ならば{}内の処理を実行することを繰り返します。

    最後に、iが5以上となれば、ループから抜ける という処理になるのです。

    増分処理

    ちなみに、if文は、前述のインクリメントおよび、デクリメントという処理をよく行います。デクリメントとは、インクリメントの反対で、変数の値を1減らす処理です。

    例えば、iをデクリメントする場合、「i–」と記述することが出来ます。

    ちなみに、この「++」および、「–」は、変数のどちら側に書いてもかまいません。

    ++i,–i

    のように前方に各方式を前置、逆に

    i++,i–

    のように後に各方法を後置と言います。

    もちろん、インクリメント・デクリメントばかりがfor文で用いられる全てではありません。

    例えば、

    とすると、iは「12 9 6 3」といったように、3ずつ減っていきます。

    Forの多重ループ

    for文の使われ方とよくあるのが、多重ループと言われる方法です。これは、判りやすく言うと、「for文のなかにfor文が入っている」という状態です。例えば、以下のようなものです。

    このサンプルでは、iによるループが2回、jによるループが3回なので、2×3=6回、処理が繰り返されます。このループはforば二重なので、forの二重ループとも呼ばれます。

    なお、三重、四重のループも作ることは出来ますが、余りやりすぎるとプログラムが複雑になりすぎるので注意が必要です。

    for文と配列

    さて、このfor文ですが、実は配列変数と大変相性がよく、しばしばセットで用いられます。例えば、

    を実行すると、結果、「5 4 3 2 1」と表示されます。これは、整数型配列nの値n[0]からn[4]までが順次表示されたということを意味します。

    n.lengthは、配列変数nの長さを意味します。この場合、5ですから、この処理は、iが1ずつ増えていき、最終的に4になるまで5回繰り返されることになります。

    n[i]は、iが増えていくことにより、n[0]、n[1]、…、n[4]と変化していくわけです。

    拡張for文

    前述の通り、for文は配列と大変相性が良いという特徴が有ります。そのため、配列をより便利に使えるfor文として、拡張for文という特殊なfor文が用意されています。

    拡張for文とはどのようなものかを説明する前に、ForSample2と同じ処理をするサンプルを、拡張for文で記述してみましょう。

    同じ処理をしているにもかかわらず、随分プログラムが簡素化されたことがわかります。

    見て判るとおり、プログラムからは配列の添え字、および長さが取り除かれています。

    for (データ型 変数名: 配列){
    実行する文1;
    実行する文2;

    }
    最初の説明したfor文とは、中がまったく別のものとなっています。

    この形式では値を順に取り出したい配列と、取り出した値を格納する変数の二つをコロン(:)で区切って記述します。

    繰り返される回数は配列に含まれている値の数だけなので条件式は必要ありませんし変化式も必要ありません。

    配列の要素を一つ一つ取り出したい場合には、大変便利です。

    ArrayListと拡張for文

    ところで、この拡張for文が使えるのは、配列変数だけでは有りません。コレクションにも適用できるのです。例えば、以下のように、ArrayListを用いることも出来ます。

    とすると、配列の場合と同じ結果が得られることがわかります。つまり、拡張for文の特徴は、配列とコレクションを全く区別しないで同じように用いることが出来るという点にあります。

    最後に

    このようにfor文は実に多様な使い方が出来ます。特に、拡張for文はJavaのご先祖様であるC言語にはもともとなかったループ処理で、コレクションを多く用いるJavaのプログラミングには非常に重宝します。

    ただ、場合によっては普通のfor文を用いたり、whileやdo~whileを用いた方がよい倍亜も当然のことながら存在します。

    どのような場面で何を使うかは、しっかり吟味しながらプログラミングをすることが大事です。


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料10万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテキャンバナー ポテキャリバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア

    関連ワード

    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE