break、continue以及return的区别如下:

1、break

break用于完全结束一个循环,跳出循环体,不再执行下面的代码。对于多层循环嵌套,如果break语句出现在嵌套循环中的内循环时,它仅仅只是终止了内循环的执行,对外循环不影响其执行。例如如下程序:

public class BreakTest {

    public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
if (i == 1) {
// 执行该语句时将结束循环
break;
}
}
}
}

运行上面程序可以看到,当i等于1时,循环体遇到break语句,程序跳出该循环。

break语句不仅可以结束其所在的循环,还可以结束外层循环,只需要在外层循环定义一个紧跟英文冒号(:)的标识,然后在循环体里使用带有标识的break语句,这样可以跳出多层循环。示例如下:

public class BreakTest {

    public static void main(String[] args) {
// outer作为外层循环的标识
outer: for (int i = 0; i < 8; i++) {
// 内层循环
for (int j = 0; j < 5; j++) {
if (j == 3) {
// 跳出outer标签所标识的循环
break outer;
}
}
}
}
}

通常紧跟break之后的标识,必须在break所在的循环的外层循环之前定义才有意义,因为break默认就是结束当前其所在的循环。

2. continue

continue的作用和break有点类似,区别是continue不会终止循环,只是忽略本次循环剩下的语句,接着开始下一次循环;而break则是完全终止循环。下面程序示范了continue的用法:

public class ContinueTest {

    public static void main(String[] args) {

        for (int i = 0; i < 5; i++) {
System.out.println("i=" + i);
if (i == 2) {
// 忽略本次循环剩下的语句
continue;
}
System.out.println("continue后的输出语句");
}
}
}

打印结果为:

i=0
continue后的输出语句
i=1
continue后的输出语句
i=2
i=3
continue后的输出语句
i=4
continue后的输出语句

从打印结果可以看出,当i等于2时,"continue后的输出语句"没有打印出来,因为continue把此行代码忽略了,继续执行下一次循环。

与break类似的是,continue后也可以紧跟一个标识,用于直接跳过标识所在循环的当次循环的剩下语句,重新开始下一次循环。例如下面的代码示例:

public class ContinueTest {

    public static void main(String[] args) {
// 外层循环
outer: for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
System.out.println("i=" + i + ";j=" + j);
if (j == 1) {
// 忽略outer所在循环中本次循环剩下的语句
continue outer;
}
}
}
}
}

打印结果为:

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

从运行结果中可以看出,当j等于1时,由于执行了continue outer语句,结束了外循环的当次循环,j的值无法超过1。

3. return

return关键字不是用来结束循环的,而是用于结束方法的。当一个方法执行到return语句时,该方法将被结束。如果在一个方法的循环体内执行return语句,这个方法就会结束,当然循环自然也就随之结束。例如下面程序:

public class ReturnTest {

    public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
System.out.println("i=" + i);
if (i == 1) {
return;
}
System.out.println("return后的输出语句");
}
}
}

打印结果为:

i=0
return后的输出语句
i=1

从打印结果可以看出,当i等于1时,由于执行了return语句,所以这个方法及方法里的循环都结束了。值得注意的是:return结束的是整个方法,而不管这个return处于多少层循环之内。

引申的问题:Java语言中是否存在goto关键字?

goto关键字是Java的保留字,目前还没有在Java中使用。虽然不能像C/C++那样可以使用goto跳出多重循环,但在Java语言中可以使用break和continue来达到同样的效果。

欢迎关注微信公众号【Java典籍】,收看更多Java技术干货!

  ▼微信扫一扫下图↓↓↓二维码关注

 

break、continue以及return的区别的更多相关文章

  1. break continue exit return 的区别

    [root@localhost day1]# cat ss.sh #!/bin/bash for ((i=0;i<5;i++)) do if [ $i -eq 3 ] then break #c ...

  2. break、continue和return的区别

    break.continue和return的区别 break function myBreak() { for(var i = 0; i < 5; i++) { if(i == 3) { bre ...

  3. js中的break,continue和return的用法及区别

    为什么要说个?好像很简单,但是我也会迷糊,不懂有时候为什么要用return,然而break和continue也经常和他放在一起. 所以就一起来说一说,这三个看起来很简单,却常常会出错的关键词的具体用法 ...

  4. js中退出语句break,continue和return 比较 (转载)

    在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止 首先:break和continue两个一 ...

  5. js中退出语句break,continue和return 比较

    js中退出语句break,continue和return 比较 在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是 ...

  6. JS中break continue和return的用法?

    在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止 break和continue: 退出循环 ...

  7. js中退出语句break,continue和return 比较(转)

    原链接:http://blog.163.com/ued_er/blog/static/199703159201210283107315/ js中退出语句break,continue和return 比较 ...

  8. js中的break,continue和return到底怎么用?

    为什么要说个?好像很简单,但是我也会迷糊,不懂有时候为什么要用return,然而break和continue也经常和他放在一起. 所以就一起来说一说,这三个看起来很简单,却常常会出错的关键词的具体用法 ...

  9. [转帖]Shell脚本中的break continue exit return

    Shell脚本中的break continue exit return 转自:http://www.cnblogs.com/guosj/p/4571239.html break结束并退出循环 cont ...

随机推荐

  1. Idea 的两个快捷键不能用的解决过程

    早上来重启电脑后,Idea 的Ctrl+Alt+V还能用,但中间不知道那个时间点开始就不好用了(中间有启动有道词典查词) 度娘上没找到答案,hot key这种软件被win10提示有病毒,没敢用 然后尝 ...

  2. 关于new date()获取服务器时间与linux系统时间不一致的解决办法 2017.12.6

    在catalina.sh  第一行添加一下脚本JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=GMT+08"

  3. 苹果通知推送服务(APNS)一些关键特性摘要

    http://ramosli.iteye.com/blog/1940843 前段时间,仔细研究了APNS的文档,把一些关键的地方记录了下来,弄懂这些对于理解APNS的规则,至关重要. 1. If AP ...

  4. 小米笔记本怎么关闭secure boot

    关闭Secure Boot的步骤: 一.关闭 "快速启动" 功能 1.右键-开始菜单- 电源选项,进入后 点击"选择电源按钮的功能". 2.进入电源选项设置后, ...

  5. hibernate 增改查后对象的三种状态转换

    this.getSession().update(obj); this.getSession().merge(obj); this.getSession().saveOrUpdate(obj);1. ...

  6. 【BZOJ 3924】[Zjoi2015]幻想乡战略游戏

    题目: 题解: 对点分树理解加深了233,膜拜zzh干翻紫荆花. 感谢zzh的讲解. 首先优化基于传统DP,假设树不发生变化,我们就可以利用DP求出带权重心. 考虑修改,我们思路不变,还是从root开 ...

  7. 【UOJ】67 新年的毒瘤 &【BZOJ】1123 BLO

    [UOJ 67] 题目链接: 传送门 题解: 第一眼很懵逼……这什么鬼. 思考什么点复合条件……(o(>﹏<)o 1.树,也就是说还剩n-2条边,等价于要删去一个度数为m-n+2的点. 2 ...

  8. vue笔记 递归组件的使用

    递归组件 什么是递归组件? 组件自身去调用组件自身. 代码示例 DetailList.vue(子组件-递归组件) <template> <div> <div class= ...

  9. vue中的 ref 和 $refs

    如图,ref 被用来给元素或子组件注册引用信息.引用信息将会注册在父组件的 $refs 对象上.如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素:如果用在子组件上,引用就指向组件实例: ...

  10. github下载和上传项目

    git下载和上传项目 下载: git clone +地址 上传: 1.git init 在当前项目的目录中生成本地的git管理(多一个.git文件夹,为隐藏文件) 2.git add .(注意最后面有 ...