下面这段代码中,两个方法分别在同样的地方使用了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 + " ");
}
}
}
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)、引用static的方法和变量,不需要和实例捆绑在一起,这可以提高代码的编写的效率,这样的例子我们随处可见;
(2)、java的主类中main()方法本身就是一个static的,所以main方法的执行就是在没有产生新的实例的情况;对于静态的东西,JVM在加载类时,就在內存中开辟了这些静态的空间,所以虽没有静态的main()方法但是程序还是执行了,不过抛出来了无main()方法的异常。这也不知算不算是java的一个漏洞;
(3)、如果需要创建一个脱离于实例的变量或方法(只与整个类有关),那么用static作修饰是再好不过了,如我们经常看到要统计实例实现的个数(通常的例子就是计数)。
(4)、使用一种静态的方法的编程通常叫做防御(defensive)编程,它可以在API供应商突然中断支持的情况下保护代码
break是跳出包含它的最内层循环!
大便完如果忘了带纸只有木棍,你可以用木棍。这个时候如果要说“哇,效果居然等同”,那也行,确实!
另外,用纸会比用木棍效率高一些。比喻不当。sorry
楼主只要在你的for循环后面加一条print语句不就看到区别了?(注: 加一条print语句也是没有返回值,同时也不是多层嵌套)另外,labeled break是可以跳到指定的层.