Java学習ノートの制御実行プロセス


ほとんどの言語では、順序、条件、ループ文の3つの制御実行プロセスがサポートされています.一人で歩くことを例にこの3つの文を紹介します.
1.順序文
シーケンス文は、1つの命令の実行です.一人で一歩一歩前に進むように.
2.条件文
条件文は条件に基づいて選択されます.一人で歩いているうちに分岐点に出会ったように、案内板にはゴールに通じる道が一つしかないと書かれていたので、今回は選択して、ゴールに着くことができて、間違ってゴールに着くことができませんでした.
       if(boolean-expression)                   if(boolean-expression1)
            statement1; またはstatement 1;
       else                                                 else if(boolean-expression2)
            statement2;                                       statement2;
                                                               else
                                                                        statement3;
右側の条件文のネストとして理解できる、すなわち条件文はネスト可能であるが、else文は書かなくてもよく、boolean-expressionはbooleanを生成することに注意しなければならない.
3.循環文
条件がfalseの場合、ループから飛び出します.そうしないと、ループ内の文が常に実行されます.
a.while文
        while(boolean-expression)
           {
                   //body
            }
これはこの人の心の中に信念があるようなもので、まだゴールに着いていない限り、私はずっと歩いていきます.ここでゴールするかどうかが条件です.達成しないで循環体の中の継続を実行して、いったん達成したら終わります.
b.do-while文
     do
          {
             //body
         }while(boolean-expression)
これはこの人の心が理想的に一歩歩いてみるようなもので、この一歩がゴールに達したら行かないで、着いていないならもう一歩歩いてみましょう.
Compare:while文とdo-while文の違いがわかりやすく、do-whileは少なくとも1回(先に見て)実行されますが、while文は1回も実行されていない可能性があります(終点までは見えません).
c.for文
for(initialization;boolean-expression;step)
        statemnet;
ゴールまであと100歩と書かれた案内板に出会ったとき、この人は自分がまだ歩いていないことを考え始めました.彼は100歩を歩きます.この時は100歩未満です.彼は一歩歩かなければならない.歩き終わったら自分の歩いた歩数を1(step)加算し、100歩と比較し続けなければならない.着いたら歩き続け、着いたらゴールに着いたことを意味する.これがforループ文の実行順序だ.
4.return文
returnの役割は、関数の戻り値を返すことです.しかし、関数には戻り値がない場合があります.この場合、return文を使用することもできますが、return文のように戻り値がありません.すなわち「return;」そうですか.return文に実行すると、関数が終了するので、後でコードがあっても実行されないので、returnは実行プロセスを制御するために使用できます.
5.breakとcontinue
どのサイクルでも内部では、この2つのキーワードを使用して実行プロセスを制御できます.breakはループを強制的に終了するために使用され、ループ内の残りのコードは実行されません.continueは、現在のループを終了し、ループの先頭に戻り、次のループを開始するために使用されます.
for (int i = 0; i < 5; i++) {
if (i == 1)
continue;
if (i == 3)
break;
System.out.println(i);
}

output:
0
2
その2つのif文がなければ、結果として0、1、2、3、4が印刷されるが、continueが加わったため、i=1のループを終了し、ループの先頭にジャンプし、次のループi=2を開始する.break文を入れてi=3でループを終了したため、3も4も印刷されなかった.
多重ループの中でbreakとcontinueは一番外にジャンプしますか?それとも一番奥のループにジャンプしますか?
Key:continueは最内層サイクルの先頭に戻り、実行を続行します.breakのように最内層サイクルの先頭を中断します.       
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
if (j == 0)
continue;
if (j == 2)
break;
System.out.println("j="+j);
}
System.out.println("i="+i);
}
System.out.println("Hello World");

output:
j=1
i=0
j=1
i=1
Hello World
解析:i=0の場合、j=0の場合、continueは内層サイクルの先頭にジャンプし、j=1を実行し、印刷された
j=1、j=2の実行を継続し、breakは内層サイクルから飛び出し、i=0を印刷した.この中でcontinueが外層ループヘッドにジャンプした場合、j=1およびi=0は印刷されず、Hello Worldが直接印刷されます.breakが外層ループから飛び出した場合、jj=1とHello Worldしか印刷されません.したがって、このコードからもcontinueとbreakは最内層ループにジャンプまたはジャンプするだけであることがわかります. 
6.ラベル
では、外層サイクルや多層サイクルの内部のあるサイクルにジャンプしたい場合は、どのような方法がありますか.
key:Javaはラベルというメカニズムを提供しており、このような考えを簡単に実現することができます.ラベルは、あるループに名前を付けることに相当し、breakやcontinueを使用すると、私が考えているループにジャンプすることを指定することができます.Javaでラベルを使用する必要がある唯一の理由は、ループネストが存在し、多層ネストからbreakやcontinueを使いたいからです.
ラベルは「label:」のようなコロンの付いた識別子で、ループ文が続きます.
outer: for (int i = 0; i < 2; i++) {
inner: for (int j = 0; j < 3; j++) {
if (j == 0)
continue outer;
if (j == 2)
break inner;
System.out.println("j=" + j);
}
System.out.println("i=" + i);
}
System.out.println("Hello World");

output:Hello World
上のコードからラベルの定義もラベルの使用も見ることができ、結果によってラベルの役割も見ることができます.