黑马程序员技术交流社区

标题: 急:return 终止循环和break终止循环的区别? [打印本页]

作者: axuan    时间: 2014-6-9 17:06
标题: 急:return 终止循环和break终止循环的区别?
方法的返回值定义为void,为什么还可以使用 return ;
return 终止循环和break终止循环的区别?


public class Test
{
        public static void main(String[] args)
        {
                for(int j=0;j<100;j++)
                {
                        if(j==10)
                        {
                                System.out.println("j="+j);
                                break;
                        }
                }
               
                for(int i=0;i<100;i++)
                {
                        if(i==10)
                        {
                                System.out.println("i="+i);
                                return ;
                        }
                }
               
               
        }
       
}
作者: 月光海    时间: 2014-6-9 17:33
return不是终止循环,是终止函数,break是跳出所在循环,所在函数还会继续执行
作者: 123_yaya    时间: 2014-6-9 17:50
这问题提得好好,总结了一下break,return,还有continue,例子可能不太恰当。return就是函数返回的意思。break是退出最近的循环。continue是停止当前执行的反复,开始新的反复。
  1. package com.study.two;

  2. public class Test3
  3. {
  4.         public static void main(String[] args) {

  5.                 for (int j = 0; j < 3; j++) {
  6.                         for (int i = 0; i < 3; i++) {
  7.                                 System.out.println("i=" + i);
  8.                                 continue;
  9.                         }
  10.                         System.out.println("j=.........." + j);
  11.                 }
  12.                 System.out.println("-----------------------");

  13.                 for (int j = 0; j < 3; j++) {
  14.                         for (int i = 0; i < 3; i++) {
  15.                                 System.out.println("i=" + i);
  16.                                 break;
  17.                         }
  18.                         System.out.println("j=.........." + j);
  19.                 }
  20.                 System.out.println("-------break与return的区别----------------");

  21.                 for (int j = 0; j < 3; j++) {
  22.                         for (int i = 0; i < 3; i++) {
  23.                                 if (i == 2) {
  24.                                         System.out.println("i=" + i);
  25.                                         break;
  26.                                 }
  27.                         }
  28.                         System.out.println("j=.........." + j);
  29.                 }
  30.                 System.out.println("-----------------------");
  31.                 for (int j = 0; j < 3; j++) {
  32.                         for (int i = 0; i < 3; i++) {
  33.                                 if (i == 2) {
  34.                                         System.out.println("i=" + i);
  35.                                         return;
  36.                                 }

  37.                         }
  38.                         System.out.println("j=.........." + j);
  39.                 }

  40.         }
  41. }
复制代码

作者: a6217815    时间: 2014-6-9 17:58
break是直接跳出当前循环,也就是说循环后面有东西的话会继续执行后面的东西
return是返回一个数 然后再结束整个函数或者方法,也就是return之后的代码 还没有被运行 这个程序就结束了
作者: a6217815    时间: 2014-6-9 17:59
a6217815 发表于 2014-6-9 17:58
break是直接跳出当前循环,也就是说循环后面有东西的话会继续执行后面的东西
return是返回一个数 然后再结 ...

纠正一下,不是 程序就结束了,是方法结束了
作者: 杨桦    时间: 2014-6-9 18:02
break是跳出当前整个循环语句,而continue是跳过当前循环的某一个条件语句的动作,return则是跳出当前函数而不往下继续执行。
作者: 123_yaya    时间: 2014-6-9 18:38
改了一下测试代码:
  1. package com.study.two;

  2. public class Test3
  3. {
  4.         public static void main(String[] args) {

  5.                
  6.                 System.out.println("-------break与continue的区别----------------");
  7.                 for (int j = 0; j < 3; j++) {
  8.                         for (int i = 0; i < 3; i++) {
  9.                                 if(i==1)
  10.                                   continue;
  11.                                 System.out.println("i="+i);
  12.                         }
  13.                         System.out.println("j=.........." + j);
  14.                 }
  15.                 System.out.println("-----------------------");

  16.                 for (int j = 0; j < 3; j++) {
  17.                         for (int i = 0; i < 3; i++) {
  18.                                 if(i==1)
  19.                                   break ;
  20.                                 System.out.println("i="+i);
  21.                         }
  22.                         System.out.println("j=.........." + j);
  23.                 }
  24.        
  25.                 System.out.println("-------break与return的区别----------------");

  26.                 for (int j = 0; j < 3; j++) {
  27.                         for (int i = 0; i < 3; i++) {
  28.                                 if (i == 2) {
  29.                                         System.out.println("i=" + i);
  30.                                         break;
  31.                                 }
  32.                         }
  33.                         System.out.println("j=.........." + j);
  34.                 }
  35.                 System.out.println("-----------------------");
  36.                 for (int j = 0; j < 3; j++) {
  37.                         for (int i = 0; i < 3; i++) {
  38.                                 if (i == 2) {
  39.                                         System.out.println("i=" + i);
  40.                                         return;
  41.                                 }

  42.                         }
  43.                         System.out.println("j=.........." + j);
  44.                 }

  45.         }
  46. }
复制代码


测试结果是:

-------break与continue的区别----------------
i=0
i=2
j=..........0
i=0
i=2
j=..........1
i=0
i=2
j=..........2
-----------------------
i=0
j=..........0
i=0
j=..........1
i=0
j=..........2
-------break与return的区别----------------
i=2
j=..........0
i=2
j=..........1
i=2
j=..........2
-----------------------
i=2

作者: axuan    时间: 2014-6-9 19:29
123_yaya 发表于 2014-6-9 17:50
这问题提得好好,总结了一下break,return,还有continue,例子可能不太恰当。return就是函数返回的意思。bre ...

谢谢你的耐心解答




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