• ベストアンサー

[Java] while(true)の意味

Javaの参考書で、下記の文がありました。 ... while(true){ 処理 } ... whileの条件式で“true”と書いてありますが、trueではなくなる(falseになる)のは どのような処理が実行された時でしょうか? 出来れば具体的なコードでご教示頂けると助かります。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.3

> 要は、このwhileを抜けるのは、どういった処理が実行されたらなのかな?? ・「処理」の中でbreak文が実行された(更なるループ内かswitch文の中にないこと) ・「処理」の中でreturn文が実行された(この場合この文があるメソッドから抜ける) ・「処理」の中あるいはそれから呼び出されるメソッドから例外が投げられた(この場合投げられた例外をキャッチできるところまで戻る。どこでもキャッチできなかった場合はプログラム終了) たぶんあなたは「こんないつまでも終わらないループにどんな意味があるのか」と思われて質問されたと思います。 確かにこれ(無限ループ)はそれを抜け出す手段をループ内に設けない限り意味がありません(というか、普通は作ってはいけない)。 しかし、実はわざと作られた無限ループは結構利用されているテクニックです。 たとえば、AWTやSwingなどのGUIプログラミングで何らかのイベント部分のみを書くだけでウィンドゥが書かれたとおりの動作を行いますが、あれはAWTやSwingなどの内部で以下のような処理を行っているからです。 (あくまでも疑似コードで、詳細は異なるかもしれませんが) while(true){  if(OSからのイベントが1件以上あるか?){   OSからのイベントを1件受け取り;   受け取ったイベントから処理を行うメソッドを決定し、パラメータを作成;   メソッド実行; // GUIフレームワーク既定のメソッドかもしれないし、プログラマーが記述したイベントハンドラかもしれない   if(メソッド実行結果が「プログラム終了」?)    break;  } } 上記以外にも、何かを待つ処理の場合は、無限ループ内でその何かが起きたかどうかかを判定し、何かが起きたらbreakする、というのが定番処理になっています。

hakase-chan
質問者

お礼

いやー、、、そんな使い方もあるんですね。。。 GUIはまったく勉強してないので、未知の領域です。。。 ご丁寧な回答ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • myr0326
  • ベストアンサー率52% (24/46)
回答No.2

while(true){ } で、永久ループになります。 抜けるには、breakを使います。 例えば、 int i=0; while(true){ i++; if(i==3){ break; } } とすれば、iが3のときにループを抜けることが出来ます。

すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

true って定数だよね.

hakase-chan
質問者

補足

要は、このwhileを抜けるのは、どういった処理が実行されたらなのかな?? 具体的に、分かりますか?

すると、全ての回答が全文表示されます。

専門家に質問してみよう