1. 概要

最も基本的な意味では、プログラムは命令のリストです。 制御構造は、これらの命令を通過するパスを変更できるプログラミングブロックです。

このチュートリアルでは、Javaの制御構造について説明します。

制御構造には次の3種類があります。

  • 2つ以上のパスから選択するためにを使用する条件分岐。Javaには、 if / else / else if 、三項演算子の3つのタイプがあります。 X171X]スイッチ。
  • 複数の値/オブジェクトを反復処理し、特定のコードブロックを繰り返し実行するために使用されるループ。 Javaの基本的なループタイプは、 for while です。 whileを実行します。
  • ループ内の制御フローを変更するために使用される分岐ステートメント。Javaには、breakcontinueの2つのタイプがあります。

2. If / Else / Else If

if / else ステートメントは最も基本的な制御構造ですが、プログラミングにおける意思決定のまさに基礎と見なすこともできます。

if は単独で使用できますが、最も一般的な使用シナリオは、 if /elseを使用して2つのパスから選択することです。

if (count > 2) {
    System.out.println("Count is higher than 2");
} else {
    System.out.println("Count is lower or equal than 2");
}

理論的には、 if / else ブロックを無限にチェーンまたはネストできますが、これはコードの可読性を損なうため、お勧めできません。

この記事の残りの部分では、別のステートメントについて説明します。

3. 三項演算子

三項演算子を、 if /elseステートメントのように機能する省略式として使用できます。

if /elseの例をもう一度見てみましょう。

if (count > 2) {
    System.out.println("Count is higher than 2");
} else {
    System.out.println("Count is lower or equal than 2");
}

これは、次のように3値でリファクタリングできます。

System.out.println(count > 2 ? "Count is higher than 2" : "Count is lower or equal than 2");

ターナリはコードを読みやすくするための優れた方法ですが、 if/elseの代わりになるとは限りません。

4. スイッチ

複数のケースから選択できる場合は、スイッチステートメントを使用できます。

簡単な例をもう一度見てみましょう。

int count = 3;
switch (count) {
case 0:
    System.out.println("Count is equal to 0");
    break;
case 1:
    System.out.println("Count is equal to 1");
    break;
default:
    System.out.println("Count is either negative, or higher than 1");
    break;
}

3つ以上のif/elseステートメントは読みにくい場合があります。 考えられる回避策の1つとして、上記のスイッチを使用できます。

また、スイッチにはスコープと入力の制限があり、使用する前に覚えておく必要があることにも注意してください。

5. ループ

同じコードを連続して複数回繰り返す必要がある場合は、loopsを使用します。

同等のforおよびwhileタイプのループの簡単な例を見てみましょう。

for (int i = 1; i <= 50; i++) {
    methodToRepeat();
}

int whileCounter = 1;
while (whileCounter <= 50) {
    methodToRepeat();
    whileCounter++;
}

上記の両方のコードブロックは、methodToRepeatを50回呼び出します。

6. 壊す

ループを早期に終了するには、breakを使用する必要があります。

簡単な例を見てみましょう:

List<String> names = getNameList();
String name = "John Doe";
int index = 0;
for ( ; index < names.length; index++) {
    if (names[index].equals(name)) {
        break;
    }
}

ここでは、名前のリストで名前を探しています。見つけたら、探すのをやめたいと思います。

通常、ループは完了しますが、ここでは break を使用して、ループを短絡し、早期に終了します。

7. 継続する

簡単に言えば、 continue は、現在のループの残りをスキップすることを意味します:

List<String> names = getNameList();
String name = "John Doe";
String list = "";
for (int i = 0; i < names.length; i++) { 
    if (names[i].equals(name)) {
        continue;
    }
    list += names[i];
}

ここでは、重複するをリストに追加することをスキップします。

ここで見たように、breakおよびcontinueは反復時に便利ですが、returnステートメントまたは他のロジックで書き換えることができます。

8. 結論

この簡単な記事では、制御構造とは何か、およびそれらを使用してJavaプログラムのフロー制御を管理する方法を学びました。

この記事で紹介するすべてのコードは、GitHubから入手できます。