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. vue项目如何刷新当前页面

    1.场景 在处理列表时,常常有删除一条数据或者新增数据之后需要重新刷新当前页面的需求. 2.遇到的问题 1. 用vue-router重新路由到当前页面,页面是不进行刷新的 2.采用window.rel ...

  2. BootStrap 专题

    验证码的输入框和验证码图片在一行,用bootstrap原生的怎么写呢? 看了教程,没有完全一样的可以让右侧的按钮“输入验证码”固定大小.左侧的输入框动态大小吗?   <div class=&qu ...

  3. OAuth 2 开发人员指南(Spring security oauth2)

    https://github.com/spring-projects/spring-security-oauth/blob/master/docs/oauth2.md 入门 这是支持OAuth2.0的 ...

  4. 一次故障解决过程梳理:mysql varchar text timestamp

    CHAR 类型的一个变体是 VARCHAR 类型,char(M),M是指字节长度,和varchar(M)一样 故障原因:mysql主键设置为int(9),但数据量已经大于int(9)的范围了 tips ...

  5. 这样入门asp.net core 之 静态文件

    本文章主要说明asp.net core中静态资源处理方案: 一.静态文件服务 首先明确contentRoot和webroot这两个概念 contentRoot:web的项目文件夹,其中包含webroo ...

  6. javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法

    前言 for,slice(0),concact() 在js中,数组和对象的复制如果使用=号来进行复制,那只是浅拷贝.如下图演示:  如上,arr的修改,会影响arr2的值,这显然在绝大多数情况下,并不 ...

  7. Jquery样式

    css样式只有一个的时候: $(function(){ $('p').css('background-color','green'); }) css样式有多个的时候: $(function(){ $( ...

  8. MongoDB与python交互

    1.Pymongo PyMongo是Mongodb的Python接口开发包,是使用python和Mongodb的推荐方式.官方文档 2.安装 进入虚拟环境 sudo pip install pymon ...

  9. Spring Cloud 多版本管理那些事。

    好久没有研究 Spring Cloud 了,也没有关注它的更新及新特性,上官网看了下,又增加了几个版本,有正式版有预览版,多达 6 个版本,实在让人蒙逼. 而我们的项目版本还仪停留在 Dalston ...

  10. Protostuff序列化分析

    前言最近项目中需要将业务对象直接序列化,然后存数据库:考虑到序列化.反序列化的时间以及生产文件的大小觉得Protobuf是一个很好的选择,但是Protobuf有的问题就是需要有一个.proto的描述文 ...