3.流程控制的陷阱

流程控制的陷阱

switch语句方面的陷阱

default语句会永远执行吗?

不会

switch 语句之后可以包含一个default分支。从字面意义上看,这个分支是默认分支,似乎是无条件执行的分支,实际上不是。default分支的潜在条件是,表达式的值与前面分支的值都不相等。也就是说,在正常情况下,只有当switch语句的前面分支没有获得执行时,default分支才会获得执行的机会


break的重要性

在case分支后的每个代码块后都有一条break;语句,这个break;语句有极其重要的意义:用于终止当前分支的执行体。如果某个case分支之后没有使用break;来终止这个分支的执行体,即使使用花括号来包围该分支的执行体也是无效的。Java一旦找到匹配的case分支(表达式的值与case后的值相等),程序就开始执行这个case分支的执行体,不再判断与后面case,default标签的条件是否匹配,除非遇到break;才会结束该执行体。


Java7增强的switch表达式

在Java7以前,switch语句的表达式只能是如下5种数据类型。

》byte:字节整型。

》short:短整型。

》int:整型

》char:字符型。

》enum:枚举型。

从Java7开始,switch表达式的类型可以是String类型,但不能是long、float、double其他基本类型。


循环体的花括号

什么时候可以省略花括号?

经过上面介绍不难发现,只有当循环体内只包含一条语句时才可以省略循环体的花括号,此时循环本身不会受到太大影响。当循环体有多条语句时,不可省略循环体的花括号,否则循环体将变成只有紧跟循环条件的那条语句。
在最极端的情况下,即使循环体只有一条语句,依然不能省略循环体的花括号,
关于这种情况请看下面介绍。 

省略了花括号的危险

这个错误提示甚至没有提供太多有效的信息。为什么会发生这样的情况?这是因为Java语言规定:

for、while或do循环中的重复执行语句不能是一条单独的局部变量定义语句

如果程序要使用循环来重复定义局部变量,这条局部变量定义语句必须放在花括号内才有效。
 

还有

浮点数不能作为循环计数器

foreach循环里不要对循环变量(即数组里的元素)进行赋值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值