Ale*_*gan 5 java loops while-loop do-while
这是一个非常主观的问题,所以我会更具体.有没有时间do-while循环比正常的while循环更好的编码风格?
例如
int count = 0;
do {
System.out.println("Welcome to Java");
count++;
} while (count < 10);`
Run Code Online (Sandbox Code Playgroud)
在评估do语句(也就是强制do语句至少运行一次)之后检查while条件似乎没有意义.
对于像我上面的例子那样简单的东西,我会想象:
int count = 0;
while(count < 10) {
System.out.println("Welcome to Java"); count++;
}
Run Code Online (Sandbox Code Playgroud)
通常被认为是以更好的写作风格写成的.
任何人都可以为我提供一个工作示例,说明什么时候将do-while循环视为唯一/最佳选择?你的代码中有do-while循环吗?它起什么作用?你为什么选择do-while循环?
(我有一种深刻的感觉,do-while循环可能在编码游戏中有用.如果我错了,请纠正我,游戏开发者!)
如果要从网络套接字读取数据直到找到字符序列,则首先需要读取数据,然后检查数据是否有转义序列。
do
{
// read data
} while ( /* data is not escape sequence */ );
Run Code Online (Sandbox Code Playgroud)
当特定条件为真时,该while语句不断执行语句块
while (expression) {
statement(s)
}
Run Code Online (Sandbox Code Playgroud)
do-while在循环底部计算其表达式,因此 do 块中的语句始终至少执行一次。
do {
statement(s)
} while (expression);
Run Code Online (Sandbox Code Playgroud)
现在谈谈功能上的区别,
while-loops由条件分支指令(例如 if_icmpge 或 if_icmplt)和 goto 语句组成。条件指令将执行分支到紧接着循环之后的指令,因此如果不满足条件则终止循环。循环中的最后一条指令是 goto,它将字节码分支回循环的开头,确保字节码保持循环直到满足条件分支。
ADo-while-loops也与 for 循环和 while 循环非常相似,不同之处在于它们不需要 goto 指令,因为条件分支是最后一条指令,用于循环回到开头 do-while 循环始终运行循环体至少一次 - 它会跳过初始条件检查。由于它跳过第一次检查,因此一个分支将越来越少,并且要评估的条件也会越来越少。
do-while如果表达式/条件很复杂,通过使用您可以获得性能,因为它确保至少循环一次。在这种情况下do-while could call for performance gain
这里的发现非常令人印象深刻, http://blog.jamesdbloom.com/JavaCodeToByteCode_PartOne.html#while_loop
| 归档时间: |
|
| 查看次数: |
6903 次 |
| 最近记录: |