作者macbuntu (邀怪)
看板java
標題Re: [問題] while迴圈問題?
時間Sun Mar 8 00:30:32 2009
※ 引述《damon2506 (程程)》之銘言:
: 請問在C中可以使用while(1){
: if(a>b) break;
: }
: 其中的while(1),是無條件執行,直到break為止.
: 我是java新手,想請問java是否也有類似的語法?
: 目前我只會:
: int a=0;
: while(a==0){
: if(a>b)break;
: }
: 請問在while()條件式內,是否有更好的寫法?
: 謝謝!!
大部分人喜歡用 while (
true) { .... } 但我比較喜歡 for (
;;) { ... }
從 Java 語法的語意上來看, 這兩種寫法其實有一點小小的不同:
while (true) 的
true 仍然是一個完整的 Java Expression,
是要運算然後測試結果的 boolean value, 只是剛好結果永遠固定.
而 for (;;) 的 (
;;) 裡面完全沒有 Expression 需要運算, 也不需要測試.
換句話說, 其實是要靠 compiler optimization 把 while (true) 的 true 運算省略
才會得到跟 for (;;) 一模一樣的結果.
實務上, 最笨的 compiler 也會知道可以把 (true) 拿掉, 所以其實完全沒差,
但我自己就看 for (;;) { ... } 順眼一點 :P
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.132.21
推 PsMonkey:程式碼的語意也很重要阿 XD 03/08 00:53
推 godfat:以前也是寫for(;;)但後來覺得;;很怪,就都寫成while(true)了 03/08 01:09
推 H45:同上,我也是 while(true) 一派的 :) 03/08 06:36
推 jtmh:while(true) 比較直覺易讀+1 03/08 08:21
推 zero00072:loop { ... }, RUBY 的語法。(戰) 04/24 01:54