Java: for(;;) vs. while(true)

后端 未结 9 1945
予麋鹿
予麋鹿 2020-12-01 15:29

What is the difference between a standard while(true) loop and for(;;)?

Is there any, or will both be mapped to the same bytecode after com

9条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-01 16:18

    It compiles down to the same byte code, and it is a matter of taste which construct you prefer.

    I read a lot of source code from the Oracle distributed JDK, and I cannot easily remember that I've seen a while(true) statement in their code, but I have seen a whole lot of for(;;) statements in their code. Me personally, I favor for(;;) and my reasoning goes a bit like this:

    The while-loop "should" require a boolean expression, not a boolean constant. while(true) is a bit like if(true), both of which I think has been made legal only for the added comfort of the masses. An empty while() does not compile. Adding the true in there feels a bit like hacking.

    for(;;) on the other hand is a "real loop", albeit an empty one. Also, it saves you a couple of keystrokes! =) (not that it matter)

    Therefore, and I know it sounds crazy, but although while(true) reads better in English, I think for(;;) better express your intent and is more akin to the Java programming language. Eternal loops should be avoided anyways. When I read for(;;), I feel secure knowing the developer will brake the execution path somewhere. When I read while(true), I just cannot be that sure anymore. But hey, maybe that's just me! We're all free to pick our own flavor.

提交回复
热议问题