空のfor文は無限ループする http://wisdom.sakura.ne.jp/programming/java/java9.html って話があったんで、試しに動かしてみた。
package dj.shikabane;
public class Roopslider {
public static void main(String args[]) {
int count = 0;
for (;;) {
System.out.print("count = " + count + "\r");
count++;
if (count > 9999) break;
}
System.out.println("ループを抜け出しました");
}
}
public static void main(String args[]) {
int count = 0;
for (;;) {
System.out.print("count = " + count + "\r");
count++;
if (count > 9999) break;
}
System.out.println("ループを抜け出しました");
}
}
forの継続条件とかは、コードブロックの中でも代替できるって話か。
count = 3847
count = 3848
count = 3849
count = 3848
count = 3849
・
・
・
count = 9997
count = 9998
count = 9999
ループを抜け出しました
count = 9997
count = 9998
count = 9999
ループを抜け出しました
みたいな結果が出てきたが。
「なんで3847から出てきたのか?」が、意味不明。
面白いのは「 + "\r"」っていうよくわからないコードを省いたら。
count = 0count = 1count = 2count = 3count = 4count = 5count =・・・9997count = 9998count = 9999ループを抜け出しました
と、改行せずに全く違う結果が出てくる。じゃあ\r は何だっていうと。
どうやら改行らしい。
だから改行されないってか、これを省いちゃうと。
たぶん出力結果が3847から出てきたのは、コンソールの最大行数を超えたからだと。
コンソールのバッファー・サイズ(文字)(B)は80000に設定されてた。
を参考に、とりあえず160000、倍にしてみたら。
ちゃんとcount = 0から表示してくれたね。
ちょっと小休止。
で、紹介されているサンプルコードを理解してみる。
package dj.shikabane;
public class Roopslider {
public static void main(String args[]) {
for (int i = 0, j = 10; i < 5 && j > 4; i++) {
System.out.println(i + ", " + j);
j -= 2;
}
}
}
public static void main(String args[]) {
for (int i = 0, j = 10; i < 5 && j > 4; i++) {
System.out.println(i + ", " + j);
j -= 2;
}
}
}
まず「-=」という代入演算子がよくわからんけど。代入演算子 +=, -= , *= , /=, の仕組みをみていきましょう。 - 天国にいけるC言語入門 ヘキサ構造体 ver1.1281(@solarplexuss) - カクヨムでわかった、減算代入演算子だと。
jに入ってる値を−2して、jに代入すればいいってこと。
結果は、
0, 10
1, 8
2, 6
1, 8
2, 6
になる。1回目のループでjは10だけど、j -= 2で減算されるから、8になるってか。
2回目のループ、iは1、jは8、また-2されて6に。
3回目のループの終わりで、jは4まで減る。
そうなると「i < 5 && j > 4」っていう条件を満たせないから、4回目は行かずにループ抜けるってか。
はぁ〜今日はこの辺にしとくかな。