黑马程序员技术交流社区

标题: 区别continue,break,return [打印本页]

作者: 韩明海    时间: 2013-5-26 20:53
标题: 区别continue,break,return
本帖最后由 韩明海 于 2013-5-27 11:04 编辑

在循环里,什么时候应该用continue,break,怎么有时又会用return?
作者: 梁秋瑜    时间: 2013-5-26 21:14
return是函数返回,break是中止,用来跳出循环或者switch,continue是立即开始新一轮循环
作者: 花开花落总相似    时间: 2013-5-26 21:39
我去 着不一样啊
continue, 这个是跳过本次循环直接进行下次循环
break  这个是终止循环啊
return 这个是要返回的值
作者: 张旺达    时间: 2013-5-26 21:42
  看看~ 这个不难吧
作者: 王瀛    时间: 2013-5-26 21:54
break是强制退出循环。
  1. class  BreakDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 for (int x=0;true ;x++ )//for循环,条件表达式永远为真(一直循环)
  6.                 {
  7.                         if(x==6)
  8.                                 break;//当x==6的时候,强制退出循环
  9.                         System.out.println(x);
  10.                 }
  11.         }
  12. }
复制代码
运行结果为:


continue字面意思上是“继续”,在执行循环程序时,是程序流跳转到循环语句的“}”处,继续循环。如下面代码:
  1. class ContinueDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 for (int x=0;x<40 ;x++ )
  6.                 {
  7.                         if(x<30)
  8.                                 continue;//对局部变量x进行判断,如果x<30就跳转到所在循环的"}"位置,即下面标识出的“我在这里”位置
  9.                         System.out.println(x);
  10.                 }//===>我在这里
  11.         }
  12. }
复制代码
执行结果为:


continue还可以指定需要跳转到的位置,一般在多重for循环等地方会见到。如下面代码:
  1. class ContinueForPlus
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 outer:for (int x=0;x<5 ;x++ )
  6.                 {
  7.                         for (int y=0;y<6 ;y++ )
  8.                         {
  9.                                 if (x<3)
  10.                                         continue outer;//如果符合条件,则跳转到"outer"所在位置继续执行
  11.                                 System.out.println("("+x+","+y+")");
  12.                         }
  13.                         System.out.println("Hello:"+x);
  14.                 }
  15.         }
  16. }
复制代码
执行结果为:


return一般用于方法返回值,将方法执行后的结果传递给调用该方法的成员。





作者: 无妄无涯    时间: 2013-5-26 22:07
continue,结束本次循环,进入下次循环;break,跳出break所在循环,循环后的代码继续执行;return,直接返回方法,结束函数,return后的内容都不会执行到。
作者: 尖卡斌引    时间: 2013-5-27 00:01
continue:  用于当满足于当前条件时,不需要任何操作,或者跳过当前条件。

break:      用于跳出当前循环,或者是while循环  常用于找到满足条件,结束循环使用。

return:     常用于函数返回值。(当有finally存在时  return在finally之后返回,
             但是finally里的语句改变不了返回值。
作者: 影响力147753321    时间: 2013-5-27 07:40
一.break
        1. break语句形式: break;
        2. break语句功能:
A. switch语句中,break语句会终止其后语句的执行,退出switch语句。
B. 使一个循环立即结束,也就是说在循环中遇到break语句时,循环立即终止,
程序转到循环体后的第一个语句去继续执行。
        3. 注:
A. break语句在循环中使用时,总是与if一起使用,当条件满足(或不满足)
时,负责退出循环。
                B. 如果循环体中使用switch语句,而break出现在switch语句中,则它只用
于结束switch,而不影响循环。
                C. break语句只能结束包含它的最内层循环,而不能跳了多重循环。
        4. 例: break语句的执行只能从while循环中退出,继续执行for循环的其它语句
而不是退出外层循环。
                for()
                {
                        :
                        :
                        while()
                        {
                                :
                                :
                                if() break;
                                :
                                :
                        }
                        :
                        :
                }


二。continue               
        1.continue语句形式: continue;
        2.continue语句功能:   它只能出现在循环体中,其功能是立即结束本次循环,
即遇到continue语句时,不执行循环体中continue后的语句,立即转去判断循环条件是否成立。       
3.Continue与break语句的区别: continue只是结束本次循环,而不是终止整个循
环语句的执行,break则是终止整个循环语句的
执行,转到循环语句后的下一条语句去执行。
     程序表达式及流程图如下:
(1.)        while(表达式1)                  (2.)while(表达式1)
{                                    {
      :                                   :
           If(表达式2) break;                  if(表达式2) continue;
           :                                    :
       }                                    }

  

       
三.Return
       
1.return语句形式: return (返回值);
        2.功能:return可以返回一个函数的值,并且跳出这个函数;

        Void doSomething(){
       do whatever is required by this method …
       return;
    }

只要遇到return语句,程序就在那一行代码停止执行,执行控制将立刻返回到调用该程序的代码处。
对于返回值类型为void的程序,return关键字单独作为完整的语句使用:
return;

1.    对于返回类型为void的程序,return;语句是可选的。如果省略这条语句,隐含表明程序的最后一行有一个return;语句。即,下面两个版本的doSomething程序是等价的:

void doSomething(){
                 int x=3;
     int y=4;
     int x=x+y;
}

void doSomething(){
                 int x=3;
     int y=4;
     int x=x+y;
     return;
}

2.    对于返回类型非void的程序体,必须至少包括一条明确的return语句。这种情况下,return关键字后面必须跟随一个求值类型和程序声明的返回类型一致的表达式。例如,如果程序定义为具有int返回类型,那么下列任何一种return语句都可以接受:

return 0; //returning a constant integer value
return x; //returning the value of x(assuming that x has previously been declared to be an int)
return x+y; //returning the value of the expression”x+y”(here,we`re assuming that “x+y” evaluates to an int value)
return (int)z; //casting the value of z(assume z was declared as a double to an int value)

3.    如果程序定义为具有boolean返回类型,那么下列任何一种return语句都可以接受:

return false;   //returning a Boolean constant value
return outcome; //returning the value of variable outcome (assuming that outcome has previously been declared to be of type Boolean)
return(x<3);    //returning the Boolean value that results when the value of x is compared to 3: if x if less than 3, this method returns a value of true; otherwise, it returns false.

程序体可以包含不只一条return语句。但好的编程习惯是一个程序中只在最末尾包含一条return语句。再看一下前面讨论过的isHornorsStudent程序,这个程序有两条return语句:
boolean isHonorsStudent(){
if(gpa>=3.5) return true; //first return statement
else return false; //second return statement
}

使用局部boolean型变量result来重写这个程序,该变量捕获最终返回的true/false结果。在程序最末尾用一条return语句返回result变量的值:
boolean isHonorsStudent(){
boolean result = false;
if(gpa>=3.5) result = true;
else result = false;
return result;
}
如上述代码所示,由于已经给result变量赋予初值false,因此在else子句中明确地给它赋值false是不必要的,可以像下面这样简化isHornorsStudent程序:
boolean isHonorsStudent(){
boolean result = false;
if(gpa>=3.5) result = true;
return result;
}

但是有一种情况下多个return语句是可以接受的:程序需要执行一系列操作,在这个过程中,任何一步失败意味着整个程序失败。下面的伪代码阐明了这种情况:

function cs(n){
if(n==1) { retrun 1; }
if(n==2) { return; }
else { }
}
说明:   当参数为1时函数返回值为1并且跳出函数,
                  当参数为2时函数返回值为空并且跳出函数,
                当函数为其他值时继续执行函数下面的语句,直到遇到下个return或则全部执行完语句在跳出函数

作者: 王林涛    时间: 2013-5-27 08:24
一.break
  1. switch语句中,break语句会终止其后语句的执行,退出switch语句。
2. 使一个循环立即结束,也就是说在循环中遇到break语句时,循环立即终止,
   程序转到循环体后的第一个语句去继续执行。
      
二. continue               
  continue语句:   它只能出现在循环体中,其功能是立即结束本次循环,
即遇到continue语句时,不执行循环体中continue后的语句,立即转去判断循环条件是否成立。        
         
三.Return
         
return可以返回一个函数的值,并且跳出这个函数;
  
当定义一个方法,需要返回值的时候,用return语句,如果该方法不需要返回值,或者返回值为空,则return语句可省略不写.
当函数体遇到return语句时,跳出函数体








作者: 殇_心。    时间: 2013-5-27 10:09
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
作者: 黄丽军    时间: 2013-5-27 10:57
continue就不执行当前循环里面接下来的代码了,直接跳到下一个循环。break的话跳出所有循环,当前循环和接下来的循环都不执行了。return就直接让函数返回了
作者: 无妄无涯    时间: 2013-5-27 17:09
殇_心。 发表于 2013-5-27 10:09
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!

求版主给分,好让我满足25分技术分,我的回答只是没贴具体代码吧,回答又没有问题的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2