下面这段代码中,两个方法分别在同样的地方使用了break和return,运行后居然达到了同样的效果,那是不是可以说,在没有返回值,并且不包含多层嵌套的方法中,break和return可以互换呢?另外,但比较速度的话,好像感觉return比break快,事实是这样的么?
public class BreakAndReturn
{
  public static void main(String[] args)
  { 
    breakTest(5);
    System.out.println();
    returnTest(5);
    System.out.println();
  }
  
  public static void breakTest(int n)
  {
    for (int i = 0; ; i++)
    {
      if (i == n)
        break;
      System.out.print(i + " ");
    }
  }
  
  public static void returnTest(int n)
  {
    for (int i = 0; ; i++)
    {
      if (i == n)
        return;
      System.out.print(i + " ");
    }
  }
}

解决方案 »

  1.   

    如果循环后面没有其他可执行语句可以互换如果有只能break;
      

  2.   

    return的话  不用判断后面是否还有可执行语句  所以快些
      

  3.   

    这种做法其实挺牵强的,break的作用一般是用在终止循环时使用,而return是用在方法返回上。
      

  4.   

    break是跳出包含它的最内层循环!
      

  5.   

    多个实例共享一个变量似乎不足以让我们对static那么的热情,实际上java引入static却有另外的含义:
          (1)、引用static的方法和变量,不需要和实例捆绑在一起,这可以提高代码的编写的效率,这样的例子我们随处可见;
          (2)、java的主类中main()方法本身就是一个static的,所以main方法的执行就是在没有产生新的实例的情况;对于静态的东西,JVM在加载类时,就在內存中开辟了这些静态的空间,所以虽没有静态的main()方法但是程序还是执行了,不过抛出来了无main()方法的异常。这也不知算不算是java的一个漏洞;
          (3)、如果需要创建一个脱离于实例的变量或方法(只与整个类有关),那么用static作修饰是再好不过了,如我们经常看到要统计实例实现的个数(通常的例子就是计数)。
          (4)、使用一种静态的方法的编程通常叫做防御(defensive)编程,它可以在API供应商突然中断支持的情况下保护代码 
      

  6.   

    速度的差距可以忽略。但是规范用法很重要;break指做跳出循环;return作为跳出函数。你给的例子刚好循环后没有语句,所以就一样了
      

  7.   

    还有一种情况出现在嵌套循环中的,break;只能跳出当层循环。
      

  8.   

    再说一遍
    break是跳出包含它的最内层循环!
      

  9.   

    楼上的各位,break不仅仅只是跳出最内层的循环啊,labeled break也是可以跳出嵌套的外层循环的
      

  10.   

    break就是break,return就是return。
    大便完如果忘了带纸只有木棍,你可以用木棍。这个时候如果要说“哇,效果居然等同”,那也行,确实!
    另外,用纸会比用木棍效率高一些。比喻不当。sorry
      

  11.   

    这位兄弟已经说得很清楚了.
    楼主只要在你的for循环后面加一条print语句不就看到区别了?(注: 加一条print语句也是没有返回值,同时也不是多层嵌套)另外,labeled break是可以跳到指定的层.
      

  12.   

    labeled break还真没用过哦。