Javaの基礎を抑えたい#4【ループ処理】
Java学習のアウトプット、第5弾です!
(#0から始めたので、ややこしい、、)
今回は、繰り返し処理について学んでいきます。
Javaの繰り返し処理
いわゆる一般的に該当する順次処理、前回学んだ分岐処理、そしてアルゴリズムの3つ目である繰り返し処理が今回の学習内容です。
for文
Rubyでもお馴染みというか、繰り返しといえばforだろうの代名詞的な存在ですが、Javaのfor文を例を用いて見ていきます。
package day4;
public class Sample401 {
public static void main(String[] args) {
for(int i = 1;i <= 5;i++){
System.out.print(i+" ");
}
System.out.println();
}
}
繰り返し処理が行われる条件式、増分処理など、Rubyと近い考え方の構造です。変数iが5以下の場合、処理が繰り返されるという条件でfor文が構成されています。ここの初期化処理でもintが使われているのは思えておかねばです。
前置処理と後置処理
ここで、増分処理時に登場しているi++の書き方についておさらいしておきます。++が変数iの前後どちらにあるかによって、意味は同じでも該当する演算の中身は異なっているということです。
どちらも変数の値を1増加させるという意味と持ちますが、これがマイナスのデクリメントとなると、結果が変わってくる場合があります。
int a1=1,b1=1;
int a2,b2;
a2 = a1--;
# => 結果:1
b2 = --b2;
# => 結果:0
後置処理の場合、代入の後に演算を行うとため、上記のような違いが出てきます。あまりこういった書き方はメジャーでは無いようですが、予備知識として覚えておいても良さそうです。
while文
Rubyでいうと、繰り返し処理はwhile文の方が好みでした笑
Javaでもwhile文は構造変わらないようです。
package day4;
public class Sample403 {
public static void main(String[] args) {
int i = 0;
while(i <= 5){
System.out.print(i+" ");
i++;
}
System.out.println();
}
}
for文でも登場していましたが、増分処理を忘れがちなので、変わらず注意といった感じでしょうか。whileを定義した後に条件式や増分処理をまとめて記載しないので、実行する処理の最後に忘れずに記載します。
do~while文
while文の応用的な書き方です。
package day4;
public class Sample404 {
public static void main(String[] args) {
int i = 0;
do{
System.out.print(i+" ");
i++;
}while(i <= 5);
System.out.println();
}
}
出力結果としては、先ほどのwhile文と同様になります。
これを汎用的な書き方にすると以下です。
do{
処理
}whlie(条件式);
繰り返し処理を行う条件式が最後についているだけで、働きとしては同じです。Rubyでは無い構造(むしろdoは省略していた)なので、あまり馴染みないですが、どのような違いがあるのか見ていきます。
・while文の場合
条件判定が先に存在するため、条件を満たしていない場合に処理は実行されない
・do~while文の場合
先にdo以下の処理が実行されてから条件判定が行われるため、仮に条件式を満たしていない場合でも最低限一度は処理が実行される
ここまで見ると、条件を満たしていなくても処理を実行してしまうdo~while文は、あまり使い勝手ないような気がしてしまいました。最低でも1つ処理を実行してくれるというのは、逆にそれが良い場面があるのかな?
フロントに関わる部分だと、何かしら表示されるというのは使用場面ありそうな気がしますね。
今回の繰り返し処理でアルゴリズムの3つ目を学習しました。
これを用いて、次回は実用的なプログラム作りへと昇華させたいと思います。