Java 中的控制语句有以下三类:
- 分支语句:if 和 switch
- 循环语句:while、do-while和for
- 跳转语句:break、continue、涉及到return和throw关键字的使用
条件语句:
if 型, if else 型, if else嵌套型
如果条件体只有一句话,大括号可以省略但不建议这么做。
if 语句可以相互间嵌套。
else-if结构实际上是 if-else 结构的多层嵌套,它明显的特点就是在多个分支中只执行一个语句组,而其他分支都不执行,所以这种结构可以用于有多种判断结果的分支中。
// else if 示例
if()
xxx
else if()
xxx
else if()
xxx
else
xxx
switch语句
- 其中 expression 必须为
byte
,short
,int
,char
, JDK1.5新增enum
枚举, JDK1.7新增String
类型 - default实现所有 case 都没捕获到的情况
- case 0: case 1: case 2: { } 实现了多个case对应一种情况.
- break 不要忘记, 除非有特殊用途, 比如计算学生成绩区间的案例中.
case 0:
case 1:
// 该条语句只要满足 0 or 1都是执行哦
break;
case 2: {
// 在case语句块中加一对花括号也是可以的
}
break;
default:
// 建议所有的switch都加上default子句的情况, 而且default子句建议写在最后
break;
循环语句
- 共 3 种 while, do while, for
- for 和 while 循环是在执行循环体之前测试循环条件
- Java 5之后推出 foreach 循环语句,for-each循环是for循环的变形,它是专门为集合遍历而设计的,注意 foreach 并不是一个关键字。
- 循环体内部必须通过语句更改循环变量的值,否则将会发生死循环。
while 和 do while
// while
while (循环条件) {
语句组
}
// do while
do {
语句组
} while (循环条件);
for 循环
for语句是应用最广泛、功能最强的一种循环语句。用于指导固定次数的循环
for (初始化; 循环条件; 迭代) {
语句组
}
提示 初始化、循环条件以及迭代部分都可以为空语句(但分号不能省略),三者均为空的时候,相当于一个无限循环。代码如下:
// 使用for, 写的无限循环
for (; ;) {
...
}
// 或者这么搞
while (true) {
...
}
for-each语句
Java 5 之后提供了一种专门用于遍历集合的 for 循环 for-each 循环。使用for-each循环不必按照 for 的标准套路编写代码,只需要提供一个集合或数组就可以遍历。
item 不是循环变量,它保存了集合中的元素, 他只是一个临时变量, 因此不能做删除元素和替换元素的工作
跳转语句
break、continue、throw 和r eturn。本节重点介绍 break 和 continue 语句的使用。
break语句
break语句可用于上一节介绍的 while、repeat-while和for循环结构,它的作用是强行退出循环体,不再执行循环体中剩余的语句。
在循环体中使用break语句有两种方式:带有标签和不带标签。语法格式如下:
break; //不带标签
break label; //带标签,label是标签名, 例如 label: for循环
continue语句
continue 语句用来结束本次循环,跳过循环体中尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。对于for语句,在进行终止条件的判断前,还要先执行迭代语句。
在循环体中使用continue语句有两种方式可以带有标签,也可以不带标签。语法格式如下:
continue; //不带标签
continue label; //带标签,label是标签名 , 例如 label: while循环
break添加标签的意义,添加标签对于多层嵌套循环是很有必要的,适当使用可以提高程序的执行效率。
break 和 continue 关键字比较:
- break既用在循环语句中,也可用在条件选择语句中的 switch 语句.
- contine 只用在循环语句中,作用是结束本次循环,接着继续进行条件判断
- break只会跳出最近的内循环
加餐
下列语句是经典写法
if (s == null || i ==s.length())
if (s !=null && i ==s.length())
下列语句可能产生空指针异常
if (s ==null && i ==s.length())
if (s !=null || i ==s.length())
在 Java 编程中使用短路 || 和 短路 &&, 能提高效率. 且 if 括号里面的语句要尽量简单些, 这样易读性会好且不容易出错.
参考
- 丁振凡编著,《Java 语言程序设计(第2版)》华东交大版,2014.9