流程控制的陷阱

来源:互联网 发布:阿里医疗云解决方案 编辑:程序博客网 时间:2024/05/18 03:49

1.switch语句中,default分支有一个潜在的条件,即表达式的值与前面的所有分支的值不相等,只有不执行前面的所有的分支时才会执行该分支。

 

2.java中一旦找到匹配的case分支,程序开始执行这个分支的执行体,不再判断后面的case,default标签的条件是否匹配,一次执行后面的语句,一直到本次循环结束。

 

3.switch语句的表达式只能有5种数据类型,byte,short,int,char,enum,不能是String类型,也不能使long,float,double等其他的基本类型。注意在使用枚举(enum)时,通常使用枚举类名作为限定,但是在case分支中访问枚举值时不能使用枚举类名作为限定。

 

4.对于java而言,它允许http:放在任意的位置——它是一个标签,没有任何实际意义,至于//www.baidu.com,java只把它当做一个单行注释。

 

5.java中允许使用单独的一个分号作为空语句,如果省略了if语句后面的条件执行体的花括号,那么仅仅控制到跟在该语句的第一个分号为止,因此如果后面有esle if,则编译器会提示“不带有if”的编译错误。

 

6.大部分的时候,如果循环体只包含一条语句,那么就可以省略循环体的花括号;但是如果循环体只包含一条局部变量定义的语句,那么依然不可能省略循环体的花括号。

 

7.for循环有且只有两个分号作为分隔符,初始化在第一个分隔符之前,可以同时定义多个变量,但是只能接受一条语句(不能有分号),因此这两个变量的数据类型应该相同。

 

8.使用foreach循环迭代数组,集合时,循环计数器只是保存当前正在遍历的数组元素或集合元素的值,并不是数组元素,集合元素本身,虽然java编译器对该计数器数值不报错,但是可能导致不能准确的取出对应的值。