作者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
1F:推 PsMonkey:程式码的语意也很重要阿 XD 03/08 00:53
2F:推 godfat:以前也是写for(;;)但後来觉得;;很怪,就都写成while(true)了 03/08 01:09
3F:推 H45:同上,我也是 while(true) 一派的 :) 03/08 06:36
4F:推 jtmh:while(true) 比较直觉易读+1 03/08 08:21
5F:推 zero00072:loop { ... }, RUBY 的语法。(战) 04/24 01:54