循环结构
- 循环结构:根据循环条件重复执行某段代码
- 定义对象、变量、获取数据库连接等操作尽量移至循环体外处理
while 循环
- 语法结构
while (boolean 表达式) {
循环体;
迭代语句; // 自增或自减,用于对循环次数的控制
}
- 执行流程
图 1 while循环
- while 循环特点:先判断表达式,若为 true 就执行循环体,否则,跳过循环体
- while 循环 和 do-while 循环 的循环体至少有 1 条语句用于对循环次数的控制(死循环除外)
do-while 循环
- 语法结构
do {
循环体;
迭代语句; // 自增或自减,用于对循环次数的控制
} while (boolean 表达式);
- 执行流程
图 2 do-while循环
- do while 循环特点:先执行一次循环体,再判断表达式,若为 true 就执行循环体,否则,跳过循环体
- while 循环 和 do-while 循环 的循环体至少有 1 条语句用于对循环次数的控制(死循环除外)
for 循环
- 语法结构
for (初始化语句; boolean 表达式; 迭代语句) {
循环体;
}
- 执行流程
图 3 for循环
死循环
while (true) {
}
do {
} while (true);
for ( ; ; ) {
}
循环选择
- 事先不知道循环次数,使用 while 循环或 do-while 循环,至少执行一次使用 do-while 循环
- 事先知道循环次数,优先使用 for 循环
- 死循环,推荐使用 while 循环
嵌套循环
- 重复的操作(内层循环) 需要做 N 次(外层循环)
- 确定:循环的是什么,要循环的次数
- 嵌套 for 循环性能优化:
- 将循环变量的声明放在循环外
- 将循环次数少的作为外层循环
循环控制
break
:结束当前 break 所在的整个循环continue
:跳过 continue 所在的本次循环剩下语句,开始下一次循环return
:结束 return 所在的方法- 控制外层循环
- 在外层循环开始前使用标签标识一个外层循环,如 outer:
- 在 break 或 continue 后紧跟标签名,如 break outer; 或 continue outer;
- 三者相同点:在其后不能写语句(这个语句与其在同一个花括号中),否则编译报错