Javaのfor文とは?Javaを基礎から学ぼう!

- システム
エンジニア - Javaのfor文ってどのようなものなのですか?
- プロジェクト
マネージャー - Javaで繰り返し処理を行いたい場合に使う基本のプログラムです。
Javaのfor文とは
Javaにおいて繰り返し処理を行いたい場合は、for文を使用します。for文は、Java以外の多くのプログラム言語でも使用できるプログラムの基礎中の基礎です。それではまず簡単なサンプルを実行してみましょう。
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
System.out.println(i+”回目です。”);
}
}
これを実行すると、以下のように表示されます。
0回目です。
1回目です。
2回目です。
for文の基本
for文の()の中は2つの;で区切られており3つに分けられています。ここではその3つを
for(初期処理 ; 継続判定処理 ; 変更処理)
と呼びましょう。初期処理で変数を初期化し、継続判定処理で式が成立する場合に継続し、変更処理では変数の加減などを行います。上のサンプルのfor文は、
for(まずiに0を入れる ; iが3未満なら継続する ; iを1加算する)
という意味になります。iが加算されて3に達したのでfor文から抜けたということですね。
for文の応用
例えば、iが0からでなくて1から始めたい場合は
for (int i = 1; i <= 3; i++) {
とすれば、iが1~3の間だけ続けられるので、
1回目です。
2回目です。
3回目です。
という結果になります。逆順で表示したいならば、iを減算します。
for (int i = 3; i > 0; i–) {
とすることで、
3回目です。
2回目です。
1回目です。
という結果になります。奇数だけ表示したいのであれば、iを2ずつ加算します。
for (int i = 1; i < 6; i+=2) {
とすれば、以下のように表示されます。
1回目です。
3回目です。
5回目です。
for文の二重ループ
for文は以下のように入れ子にして二重にすることができます。
for (int i = 1; i <= 2; i++) {
for (int j = 1; j <= 2; j++) {
System.out.println(“iとjをかけると”+i*j);
}
}
結果は以下になります。
iとjをかけると1
iとjをかけると2
iとjをかけると2
iとjをかけると4
2重でなく3重、4重にもできます。そういった状態をネストと言いますが、ネストが深くなるとわかりにくいプログラムになるので避けましょう。
for文の中でさらにfor文を記述する場合、別のメソッドにして呼び出すようにする方が、読みやすいプログラムになります。
for文を抜ける方法
ある条件でfor文を途中で抜けるには、どうしたらよいのでしょうか。それには、以下のようにbreakを使用します。
for (int i = 0; i < 3; i++) {
if (i==2) break;
System.out.println(i+”回目です。”);
}
System.out.println(“ループを抜けました。”);
iが2の時に抜けるので、結果は、
0回目です。
1回目です。
ループを抜けました。
となります。また以下のようにreturnでも抜けることができます。
for (int i = 0; i < 3; i++) {
if (i==2) return;
System.out.println(i+”回目です。”);
}
結果は、
0回目です。
1回目です。
となります。なおreturnを使った場合はループから抜けるだけでなく、そのメソッドから抜けてしまいます。なので、この場合は「ループを抜けました。」が表示されません。
for文の処理をスキップする方法
for文の途中で処理を飛ばし、次のターンにしたい時はどうすればいいのでしょうか。それには、以下のようにcontinueを使います。
for (int i = 0; i < 3; i++) {
System.out.println(i+”回目スタート。”);
if (i==1) continue;
System.out.println(i+”回目エンド。”);
}
結果は以下になります。
0回目スタート。
0回目エンド。
1回目スタート。
2回目スタート。
2回目エンド。
iが1の時に残りの処理を飛ばして、iが2の処理に遷移したということですね。continueは、意外と役に立つことが多いので活用しましょう。
for文の省略表記
for文の()の中の3つの処理は、それぞれ省略することも可能です。例えば初期処理を省略し、
int i = 0;
for (; i < 3; i++) {
と記述することもできます。さらに変更処理も省略して、
int i = 0;
for (; i < 3;) {
i++;
}
としても同じになります。また、継続判定処理を省略して、
int i = 0;
for (;;) {
i++;
if (i==2) break;
}
としても同じです。ただし継続判定を省略した場合、途中で必ずbreakかreturnで抜ける必要があります。
そうしないと、無限ループになってしまい、深刻なバグの原因となる可能性があります。なので、継続判定は省略しない方が良いでしょう。
for文に似ているwhile文
for文に似た機能でwhile文があります。以下がその例です。
int i = 0;
while (i < 3) { System.out.println(i+"回目です。"); i++; } 結果は以下になります。whlileの()の式が成立している間、ループ処理を行っています。 0回目です。 1回目です。 2回目です。 また、以下のように記述しても同じ結果になります。この場合は、breakがなかったら抜けることができず、無限ループになります。 int i = 0; while (true) { System.out.println(i+"回目です。"); if (++i==3) break; } while文はJava以外の多くの言語にもある機能で、このようにwhile(true)で使われることが多かったため、breakを忘れてしまい無限ループのバグを多く引き起こしてきました。そのため、職場ではコーディングルールでwhileの使用を禁止にする場合もあります。 while文で出来ることは、全てfor文でも可能です。while文は知識として知っているが、使用は控えるという方が良いでしょう。
拡張for文とは
Javaには、拡張のfor文という便利な機能があります。まず以下を見てください。
String strary[] = { “太郎”, “花子”, “一郎” };
for (int i = 0; i < strary.length; i++) { System.out.println(strary[i]); } 配列の文字列を表示するプログラムになります。結果は以下のようになります。 太郎 花子 一郎 拡張for文を使うと、上のようなfor文を以下のように簡潔に記述できます。 for (String str : strary) { System.out.println(str); } 拡張for文の文法は以下の通りで、コレクションに対して1つずつ全て取り出し、何かをおこなう処理を、拡張for文の文法を使うことで簡潔に記述できるでしょう。 for ( 取り出す型 取り出す変数 : コレクション) コレクションは配列だけでなく、List型やMap型も使用できます。拡張for文でスマートなJavaプログラミングをしましょう。
Java 8のforEachメソッド
Javaのバージョン8からラムダ式が導入されました。List型などのコレクションに、forEachというメソッドが追加されて、上のような処理をさらに簡潔に記述できます。まず、ソースの先頭に以下のimportを追加します。
import java.util.Arrays;
import java.util.List;
そしてmainメソッドに以下を記述します。forEach()の()内がラムダ式です。
List<String> list = Arrays.asList(“太郎”, “花子”, “一郎”);
list.forEach(str -> System.out.println(str));
この2行だけで、上の拡張for文のサンプルと同じことが出来てしまうのです。Java8を使う機会があれば、是非活用をしましょう。ラムダ式については、ここで説明するとfor文の説明から離れるので今回は省略します。興味があれば調べてみてください。
- システム
エンジニア - for文を使えば、作業を短縮させることが出来るのですね。
- プロジェクト
マネージャー - Javaだけでなく、どのプログラミング言語でも使えるので、覚えておくときっと役に立つでしょう。
Javaのfor文を使ってみよう
Javaのfor文を解説しましたが、いかがでしたでしょうか。for文はJ、avaだけでなくほとんどの言語にある機能なので、マスターすれば他の言語を使うときでも役立つでしょう。
Javaを勉強し始めたばかりという人は、この記事を参考にfor文の学習から始めてみてはいかがでしょうか。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Java新着案件New Job
-
設計情報のビューアシステムマイグレーション/東京都品川区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】
月給41万~43万円東京都品川区(大崎駅) -
設計情報のビューアシステムマイグレーション/東京都品川区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】
月給29万~31万円東京都品川区(大崎駅) -
大手製造会社販売物流システム再構築<アプリ設計>/神奈川県茅ヶ崎市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】
月給41万~50万円神奈川県茅ヶ崎市(-駅) -
大手製造会社販売物流システム再構築<アプリ設計>/神奈川県茅ヶ崎市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】
月給29万~34万円神奈川県茅ヶ崎市(-駅) -
医療向けWebアプリケーションのカスタマイズ対応/東京都品川区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】
月給48万~50万円東京都品川区(大崎駅) -
医療向けWebアプリケーションのカスタマイズ対応/東京都品川区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】
月給32万~34万円東京都品川区(大崎駅)