public void test() {
int num = 3;
/*
* 编写时, 可任意顺序排列各分支. default 可以不是最后一个分支
* 选择时, num 为 3, 所以选择了 default 分支.
* 一旦选择分支后, 便不再判断 label
* 执行时, 先执行 default 分支, 打印 nono;
* 接下来执行 case 2 分支, 打印 1, 然后遇到了 break, 跳出 switch.
*/
switch (num) {
case 0:
System.out.println(0);
default:
System.out.println("nono"); // 执行
case 2: // label 仅用于选择分支. 执行分支语句时没用了
System.out.println(1); // 执行
break; // 执行. 在这里跳出 switch
case 1:
System.out.println(2);
}
// 结果:
// nono
// 1
}
--------------------------------------------------------------------------------
2.3 if 和 switch 比较
(1) switch 比 if 效率稍高
(2) if 能判断区间, switch 不能
(3) if 能判断 boolean 型条件, switch 不能
(4) switch 与 if 使用场合不同:
> 当值不多, 且值类型为 switch 支持的类型时建议用 switch 语句
> 其余用 if 语句
--------------------------------------------------------------------------------
3. while 语句和 do...while 语句
3.1 while 语句格式:
/*
定义初始化表达式;
while (条件表达式) {
循环体(执行语句);
}
*/
注意:
(1) 循环体里必须改变变量使得循环能结束!!!
(2) while 语句的 while 后面千万不能有分号, 否则死循环
(非语法错误, 能编译运行, 但死循环)
3.2 do...while 语句格式:
/*
do {
循环体;
}
while(条件表达式);
*/
注意:
(1) 循环体里必须改变变量使得循环能结束!!!
(2) do...while 语句的 while 后面必须有分号";", 否则编译错误.
3.3 while 与 do...while 区别:
while 先判断条件, 只有条件满足才执行循环体.
do...while 先执行循环体, 再判断条件, 若条件满足, 再继续执行循环体.
简单一句话: do...while 无论条件是否满足, 循环体至少执行1次.
3.4 两种 while 易错点
> do...while 语句的 while 后必须有分号“;”, 否则编译错误
> while 语句的 while 后有分号“;”将死循环(因循环体为空. 非语法错误, 编译可通过)
--------------------------------------------------------------------------------
4. for 语句
4.1 for 语句格式:
/*
for (初始化表达式; 循环条件表达式; 循环后的操作表达式) {
循环体;
}
*/
注意:
(1) 结构: 2分号3表达式
(2) 初始化表达式和循环后操作表达式可以有多个语句, 用逗号","分隔开来.
(3) 循环条件表达式只能是一个 boolean 表达式, 其值要么为 true, 要么为 false
若不写循环条件表达式, 则默认为 true.
无限循环最简单表现形式: for (;;){} 或 while (true){}
或者 for (;;); 或 while (true);
(4) ***执行流程(非常重要):
先执行1次"初始化表达式",
然后依次循环执行"循环条件表达式", "循环体", "循环后的操作表达式",
直到条件不满足为止.
4.2 for 语句和 while 语句比较
能用 for 实现的循环用 while 也一定能实现, 但 for 和 while 有一点小区别:
(1) for的循环变量可声明在for内,循环结束时循环变量被释放
而 while 的循环变量必然声明在 while 外, 循环结束时循环变量不会被释放
> 变量有自己的作用域.
> 对于 for 来讲, 如果将用于控制循环的变量定义在 for 语句中,
那么循环变量只在 for 语句内有效. for 语句执行完毕,
其循环变量在内存中被释放.
> 对于 while 来讲, 控制循环的变量必然定义在 while 语句外,
while 语句执行完毕后, 其循环变量不会被释放.
(2) for 和 while 可以进行互换.
4.3 for 和 while 使用场合
> 如果循环变量仅用于控制循环的次数时, 循环结束后不再使用, 用 for 循环更合.
> 如果循环变量在循环结束后仍需要被使用, 用 while 循环更合适.
4.4 for 循环后的操作表达式
break/return/throw 后都不执行 for 循环后表达式(因为没必要)
continue 后执行 for 循环后表达式
(因为可能还会执行下一次循环, 所以执行循环后表达式,
以便判断是否还执行下一次循环)
p.s.:
try 中的 break/continue/return/throw 后都执行 finally 中的语句
--------------------------------------------------------------------------------
5. break/continue/return/throw 语句