流程控制是结构化程序设计的成果。最基本的流程控制结构有3种:顺序结构、分支结构和循环结构。
一、switch语句
1、default分支执行的条件:当default分支前面的所有分支都没有执行时,default分支才获得的执行的机会。
2、每个case分支后的代码块都应该有break;要不然所有分支都会执行。运行javac -Xlint:fallthrough 类名.java 可以检查出是否缺少break。
3、swith表达式可接收的数据类型有:byte,short,int ,char,enum。
二、循环体的花括号
1、在for、while和do...while循环中,重复执行语句只有一条,并且不是局部定义变量语句,才可以省略花括号。
2、根据Java语言规范,for循环里有且只能有2个分号作为分隔符。第一个分号之前是初始化条件,两个分号中间的部分是一个返回boolean的逻辑表达式,第二个分号是循环迭代部分,每次循环结束后会执行循环迭代部分。
3、for循环中的初始化语句和循环迭代语句可以有多条语句,但是只能用逗号作为分隔符。
4、尽量不要改变计数器的值,而且尽量不要使用浮点数做循环计数器,容易导致精度丢失。
三、foreach循环的循环计数器
从JDK5.0之后,增加了foreach循环用于遍历数组和集合的每个元素。当使用foreach循环来迭代输出数组或集合的元素时,系统将其副本传给循环计数器,也就是说foreach循环中的循环计数器并不是数组或集合元素本身。循环计数器只是一个中间变量,临时保存了正在遍历的元素。虽然循环计数器可以赋值,但是不要这样做,没意义,而且容易导致错误。
public static void main(String args []){
List<String> books = new ArrayList<String>();
books.add("Java编程思想");
books.add("Effective Java");
books.add("Java Puzzlers");
for (String book : books) {
book = "Core Java";
System.out.println(book);
}
for (String book : books) {
System.out.println(book);
}
}
上面代码第一次会打印三遍“Core Java”,第二次会依次打印集合里面的值,说明book的确是一个中间变量。