・ ブロックとローカル変数の寿命

Javaの制御構造とそのキーワードは、C 及び C++ とほとんど同じです。 プログラムは完全に構造化されています。 処理の単位は 《{》 と 《}》 で囲まれた、 クラス定義、innerクラス、メソッド、ブロックです。 ブロックは何重にも階層構造を作ることができます。 ブロックは制御構造のキーワード for, while, do, if, else, switch 、 例外処理のキーワード try, catch と結びつきます。 これらのキーワードの後のブロックが単独の文もしくは 単独の他のブロックからなる場合は、 《{》 《}》 を省略することができます。 またキーワードなしで単にブロックを作ることもできます。
メソッドおよびブロック内で宣言されたローカルな変数は、 その内部のみでアクセスが可能です。 処理がメソッドおよびブロックから抜けると、 ローカル変数は消滅します。 ブロックの外の変数とローカル変数の名前が衝突した場合は、 ローカル変数の方が優先されて解釈されます。

・ 繰り返しの処理

繰り返しの処理の対象となるブロックを作るキーワードは、 for, while, do の3つです。
for はそれに続く《(》 と 《)》 の中に 《;》 で区切られた3つの文を持ちます。


for( int i=0; i<100; i++ ) {
    /* 繰り返しの処理の内容 */
}

それぞれの意味は、初期化の処理、繰り返しを続けるかどうかの判定条件、 繰り返しのたびに行われる処理です。 上の例のように、初期化の式の中でブロック内でのみ有効なローカル変数を 宣言することができます。

while はそれに続く《(》 と 《)》 の中に、 繰り返しを行うかどうかの判定条件を持ちます。


while( i<100  ) {
    /* 繰り返しの処理の内容 */
}

do の判定条件の文はその直後には来ません。 ブロックの後に置かれた while の文で条件を判定します。


  do {
    /* 繰り返しの処理の内容 */
  }
  while( i<100  )

do で始まる繰り返しのブロックは、最低1回は必ず呼び出されます。

continue 文はブロック内の処理を途中で中断し、 次の繰り返しの処理に移ることを意味します。
繰り返しのブロックから強制的に抜け出すには break 文を使います。 break によって処理は1つ外側のブロックに抜け出します。 多重のブロックを一度に抜け出すためには、 ブロックにラベル付けをし、そのラベル名を指定する break文を使います。 (Javaでは goto文は使用できません。)


  maketable: for( int i=0; i<100; i++ ) {
                for( int j=0; j<100; j++ ) {
                          :
                     break  maketable;
                          :
                }
             }

・ 条件分岐

条件分岐を作るキーワードは if と switch です。 if は対応する else を持つことができます。else if をつなげることで、 複数の処理の分岐を行うことも可能です。


if( i<100 ){
}

if( i<100 ){
}
else {
}

if( i<100 ){
}
else if( i<50 ){
}
else{
}

switch は、その後の《(》 《)》 内の値によって複数の処理に分岐を行います。 switch のブロック内には case の後に指定された値ごとに処理を置くことができます。 該当する値の処理が存在しない場合の処理は、default: の後に置きます。


switch( value ){
        case 1:      break
        case 2:      break
        default:     break
} 

switch のブロックは単独のブロックです。 それぞれの分岐した処理を終えるには break 文でブロックから抜け出す必要が あります。
break 文は if のブロックは対象としません。 その外側のブロックに対しての break と解釈されます。 (そうしないと break するかどうかの条件判定ができなくなってしまうからです。)

if と switch の他に、記号≪ ? ≫による条件判定も使用できます。 使い方は C と同じです。≪ ? ≫の前にある boolean型の値を判定条件とし、 true ならば≪ ? ≫直後の命令を、false ならば≪ : ≫で区切られた 後の命令を実行します。


  ( i > 0 ) ? j = i : j = (-i);