Java010return_break_continue_label_switch_enum

Java010 return_break_continue_label_switch_enum

①return

②break

③continue

④label:

⑤switch和enum

a. switch

b. enum

 

Java010 return_break_continue_label

在Java中有很多关键词表示无条件分支,它们只是表示这个分支无需任何测试即可发生。这些关键字包括return/break/continue/和一个与其他语言中的goto类似的跳转到标号语句的方式。

①return

return关键字有两方面的用途:一方面指定一个方法返回什么值(假设它没有void返回值),另一方面它会导致当前方法的退出,并返回那个值。

如果在返回void的方法中没有return语句,那么在该方法结尾处会有一个隐式的return,因此在方法中并非总是必须要一个return语句。但是,如果一个方法声明它将返回void之外的其他东西,那么必须确保每一条代码路径都将返回一个值。

②break

break用于强行退出循环,不执行循环中剩余的语句。

③continue

continue用于停止当前的迭代,然后退回循环起始处,开始下一次迭代。

④label:

标签是后面跟有冒号的标识符。

Java中,标签起作用的唯一地方刚好是迭代语句之前。“刚好之前”的意思表明,在标签和迭代之间置入任何语句都不好。而在迭代之前设置标签的唯一理由是:我们希望在其中嵌套另一个迭代或者一个开关。这是由于break和continue关键字通常只中断当前循环,但若随同标签一起使用,它们就会中断循环,直到标签所在的地方,格式如下:

lable1:

outer-iteration{

inner-iteration{

//...

break;//(1)中断内部迭代,回到外部迭代

//...

continue;//(2)将执行点移回内部迭代的起始处

//...

continue lable1;//(3)同时中断内部迭代以及外部迭代,直接转到label1处,随后继续迭代过程,但却是从外部迭代开始

//...

break label1;//(4)中断所有迭代,并回到label1处,但并不重新进入迭代,实际是完全终止了两个迭代。

}

}

 

在Java里需要使用标签的唯一理由就是因为有循环嵌套存在,而且想从多层嵌套中break或continue。

在Dijkstra的《Goto有害》的论文中,他最反对的就是标签,而非goto。他发现在一个程序里随着标签的增多,产生的错误也会越来越多,并且标签和goto使得程序难以分析。但是,Java的标签不会造成这种问题,因为它们的应用场合已经受到限制,没有特别的方式用于改变程序的控制。由此也引出了一个有趣的现象:通过限制语句的能力,反而使一项语言特性更加有用。

(goto起源于汇编语言的程序控制:“若条件A成立,则跳到这里,否册跳到那里”。goto语句是在源码级别上的跳转,这使其招致了不好是声誉。若一个程序总是从一个地方跳到另一个地方,还有什么办法能识别程序的控制流程呢?

对于这个问题,中庸之道是最好的解决办法。真正的问题并不在于使用goto,而在于goto的滥用;而且在少数情况下,goto还是组织控制流程的最佳手段。Java中goto是一个保留字,但在语言中并未使用)

 

⑤switch和enum

a.switch

switch语句是实现多路选择(从一系列执行路径中挑选一个)的一种干净利落的方法。但它要求使用一个选择因子,并且必须是int或char那样的整数值。而enum可以和switch协调工作。switch一般格式如下:

switch(integral-selector){

case integral-value1 : statement; break;//break可选,若省略会继续执行后面的case语句

case integral-value2 : statement; break;

case integral-value3 : statement; break;

case integral-value4 : statement; break;

case integral-value5 : statement; break;

//...

default: statement;//一定会执行的default语句

 

}

b.enum

枚举类型enum关键字,它使得我们在需要群组并使用枚举类型集时,可以很方便地处理。枚举类型属于非常普遍的需求。

public class SimpleEnumUse{

NOT, MILD, MEDIUM, HOT, FLAMING

}

这里创建了一个名为SimpleEnumUse的枚举类型,它具有5个具名值。由于枚举类型的实例是常量,因此按照命名惯例它们都用大写字母表示(如果在一个名字中有多个单词,用下划线将它们隔开)。

由于switch是要在有限的可能值集合中进行选择,因此它与enum正是绝佳的组合。请注意enum的名字是如何能够倍加清楚地表明程序意欲何为的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dylanioucn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值