LoginSignup
0
0

More than 5 years have passed since last update.

【読書】独習Java メモっぽいレポート 四枚目

Last updated at Posted at 2016-06-17

第4章 制御ステートメントと演算子(独習Java メモっぽいレポート三枚目の続き)

4.2 forループのバリエーション

for(num = 100; num < 201; num++)

上記のような書き方以外にもforループは存在する。
例えば、初期化をするセクションはfor()内で絶対というわけではなく、

int num = 100;
for(; num < 201; num++)

と、いうようにfor分の外側だけでもできる。

また、インクリメントを行う部分も()内ではなくfor文の内側で書くことができる。

 for(num = 100; num < 201;){

    num++;

}

forループを回し続けることができる無限ループは下記のように書くと起こる。

for( ; ; ){

  cnt++;

}

4.3 whileループ

whileループとはwhile()()中身の式が真(true)である時淡々と回り続ける。
これはfor( ; ; )と同じ状態である。

while文の使用方法は以下のようにする。

 while(total <= 20){

     total += Math.random();  
     System.out.println("合計" + total);
}

今回の場合は totalが20以下であればループし続けるという条件になっている。
なので、totalが20以下の場合は真であるということになる。

4.4 doループ

doループとは以下のような書き方のことを指す。

do{

}while();

doループの特徴としてdoの中に書かれている処理は必ず処理が行われる。
動きとしてはdoで処理を実行しWhileに入った時に(i < 100)()内の条件を満たしているかどうか
をチェックし式の評価の結果、真であればまたdo戻り処理が行われ、真でなければ、ループを抜けるという形になる。

4.5 ループのネスト

ループのネストとは、ループの中にループがあって入れ子の状態にあることを指す。

for(num = 100; num < 201; num++){

   for(i = 2; i < num; i++){

       if(num % i == 0){
           break;
       }
       else{
           System.out.println("素数" + num);
           break;
       }
   }
}

Javaでは他のループでも入れ子にし書くことができる。

「whileの場合」

while(num < 201){

     while(i < num){

     }        
}

「do-whileの場合」

do{a
  do{b
    do{c

    c}while();

  b}while();

a}while();

4.6 breakステートメント

このbreakステートメントを使うことによって
任意のタイミングでループを抜けることができる。

使用方法は以下のようになる。


for(num = 100; num < 201; num++){
    if(num % i == 0){
        break;
    }
 }

この場合だとnumという変数をiで割ったとき余りが0になったときループを抜ける。

ループにラベルをつけることができbreak Label;で指定するとそのループを抜けることができる。

Label:for(num = 100; num < 201; num++){
       if(num % i == 0){

      }
      for(num = 100; num < 201; num++){
         break Label;
      }
  }

また、多重ループでラベルを使用せずにbreakステートメントを使うとbreakステートメントを書いた直近のループを抜ける。

for(num = 100; num < 202; num++){
                       ↑
    break;   ↑のループを抜ける

   for(i = 2; i < num; i++){
                
        break;   ↑のループを抜ける
     for(n = 1; n <= 101; n++){
                   ↑
           break;   ↑のループを抜ける
        for(i = 1; i < 10; i++){
                   ↑
           break;   ↑のループを抜ける
        }
     }
   }
}

4.7 continueステートメント

このcontinueステートメントを使うと最後まで処理が行われなくても、continueに
きた場合強制的に次のループを行うことができる。

int l;

(1)for(i = 100; num < 201; i++){
       if(num % i == 0){
               continue;
      }
      (2)for(num = 100; num < ; num++){
         l++;
      }
  }

この場合だとnum % i == 0だった場合(2)のループには行わず(1)のループが処理される。

for(int i = 0; i < 100; i++){

     if(i % 2 == 0){

         continue;
    }
      System.out.println("奇数::" + i);
}

何か特定の値を飛ばして表示させたいという時にも使用出来る。

4.8 switchステートメント

switchステートメントを使用すれば以下のようなif文を

if(i == 1){
  System.out.println("SPADA");
}
if(i == 2){
  System.out.println("PENDUAL");
}
if(i == 3){
  System.out.println("COPULA");
}

下記のように書くことができる。

switch (i){

  case 1:System.out.println("SPADA");
      break;
  case 2:System.out.println("PENDUAL");
      break;
  case 3:System.out.println("COPULA");
      break;
}

switchの条件式には、char型、 byte型、 short型、int型の4つの型で動作し
floatやdoubleといった浮動小数点がつく型では動作しない。
switchを使う時に注意しなければならないのは、casebreakを書き忘れると
switchの最後まで、defaultに到達するまで、caceの中身の処理が行われる。

switchにもネストがあり下記のように書くことが出来る。

switch (i){
  case 1:
       switch (j){

           case 0:System.out.println("GOLD");
                  break;
           case 1:System.out.println("SPADA");
       }
      break;
  case 2:System.out.println("PENDUAL");
      break;
  case 3:System.out.println("COPULA");
      break;
}

4.9 ビット演算子

ビット演算子を使うことにより文字や数値のビットを操作することができる。
switchステートメントのように制約があり、
「char型」、「byte型」、「short型」、「int型」、「long型」の5つの型で動作し、他の型では動作しない。
ビット演算子には条件式同様 ANd(&)、OR(|)、XOR(^)が用意されている。
またビット演算子にはビットシフト演算子があり値をシフトにより変えることができる。

short s = 0xff;
System.out.println( s << 2);

結果:1020

シフトの仕方は 左側にシフトする値、右側にシフトする回数を書くシフトする値 <<  シフトする回数
ビット演算子にはビット代入演算子が用意されており、シフトと代入を一緒に行うことなどができる。

x = x << 2

このようにビット演算子を扱うことによって聖数値をより詳細に扱うことができる。

今日はここまで。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0