在程序设计时,循环直接的跳转显得十分重要,虽然Java没有提供goto语句去控制程序的跳转,但为了控制循环,Java提供了continue,break,以及特殊的标签来实现特定的中断及跳转,当然还有return,这个相对不同一些。本篇将会做出总结。

break

在循环时,如果不想等到false就终止循环的话,可以使用break来完成。

例如以下这个简单的例子:

for (int i = 0;i<10 ;i++ ) {
System.out.println(i);
if(i==1) break;
}
System.out.println("跳出循环");//输出 0 1 跳出循环

可以直到,如果没有if(i==1) break;这个语句,这个循环将会依次输出0-9的数字,但是加上这句之后,如果执行到i等于1时,执行break语句,将直接跳出循环。

continue

continue有点像是放弃一部分,再从头开始。

依旧给出例子:

for (int i = 0;i<10 ;i++ )
{
if(i%2==0) continue;
System.out.println(i);
}
System.out.println("跳出循环");
//输出1 3 5 7 9 跳出循环
  • continue用于忽略本次循环剩下的语句,接着下一次循环,但是不会像break一样直接终止循环。
  • 上面的例子,只要时偶数就跳过后面的输出环节,后面也就都是输出奇数啦。

return

其实return并不是专门用于结束循环的关键字,而是用来结束一个方法。

for (int i = 0;i<10 ;i++ ) {
System.out.println(i);
if(i==1) return;
}
System.out.println("跳出循环");//输出 0 1
  • 可以看出,将第一个break语句的例子改成return,后面的“跳出循环”并不会被输出,也就是说return结束了整个程序。
  • 虽然return也可以结束一个循环,但是与前两个不同,他结束了整个方法,不管return藏在多少层嵌套循环里面。
  • return与break和continue不同的地方有很多,return后面可以跟一个值,并将值返回。

标签

Java中没有goto但是,continue和break两个本属于中断语句的关键字,配合上“标签”之后,有了和goto类似实现跳转的机制,能够轻易控制多层的循环嵌套。

break和continue配合标签类似,但也有差别。

标签需要放在循环语句之前,否则有啥意义吖,具体形式如:label:

  • break+标签
outer:
for (int i = 0;i<5 ;i++ ) {
for (int j = 0;j<3 ;j++ ) {
System.out.print(" i="+i+" j="+j);
if(j==1)
{
break outer;
}
System.out.println();
} }
//输出
i=0 j=0
i=0 j=1

当j==1时,遇到break outer语句,导致结束outer标签指定的循环,不是结束break所在的循环!不是结束break所在的循环!!!!

  • continue+标签
outer:
for (int i = 0;i<5 ;i++ ) {
for (int j = 0;j<3 ;j++ ) {
System.out.print(" i="+i+" j="+j);
if(j==1)
{
continue outer;
}
System.out.println();
}
}
//输出
i=0 j=0
i=0 j=1 i=1 j=0
i=1 j=1 i=2 j=0
i=2 j=1 i=3 j=0
i=3 j=1 i=4 j=0
i=4 j=1

j的值永远都不会超过1,因为每当j=1,遇到continue outer语句就结束了outer标签控制循环的当此循环,直接开始下一次循环,这时候i从i+1开始,j又将从0开始。

最新文章

  1. 关于CSS inline-block、BFC以及外边距合并的几个小问题
  2. 增量式PID简单翻板角度控制
  3. 使用fiddler2抓取手机发出的请求信息
  4. 在Toast里面显示图片
  5. 【转载】gcc和g++的区别
  6. 按钮控件Button
  7. 查询Python版本
  8. Failed to create Accelerated Display. Please check the display hardware and drivers meet the minimum requirements.
  9. 北京动点飞扬软件招募【Android全职工程师】
  10. cdqz2017-test10-加帕里图书馆(区间DP &amp; 简单容斥)
  11. 原生js实现放大镜
  12. Linux安装jsvc,及Linux服务开发
  13. VB网络编程中Winsock的使用
  14. OpenCV特征检测教程
  15. 分享一个上传图片,图片压缩Unsupported Image Type解决方案
  16. 值类型 struct
  17. 《Algorithm算法》笔记:元素排序(2)——希尔排序
  18. Jquery使两个Div的滚动条同步滚动
  19. jQuery实现鼠标悬停显示提示信息窗口的方法
  20. MR案例:WordCount改写

热门文章

  1. 07 python学习笔记-写一个清理日志的小程序(七)
  2. Asp.net Core全局异常监控和记录日志
  3. python实现输入任意一个大写字母生成金字塔的示例
  4. Nexus安装(Windows)
  5. Java后端开发工作 - 写接口
  6. JavaScript数据在内存中储存方式
  7. Splash API 调用
  8. Java自动化测试框架-08 - TestNG之并行性和超时篇 (详细教程)
  9. 20190723_C的三个小实现
  10. 第二十五章 system v消息队列(一)