关于流程控制的几个细节

来源:互联网 发布:js css filter 编辑:程序博客网 时间:2024/05/27 01:02

      流程控制是结构化程序设计的成果。最基本的流程控制结构有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的确是一个中间变量。