break
1、结束switch
2、结束当前的循环语句,比如for,while
3、结合标记使用,作用于双层循环的外层循环
如下demo输出结果为外层和内层循环交替输出
public static void testBreak() { for (int i = 0; i < 3; i++) { System.out.println("outer" + i); for (int j = 0; j < 3; j++) { if (j == 1) { break; } System.out.println("inner" + j); } } }
结果:
outer0 inner0 outer1 inner0 outer2 inner0
作为标记使用,跳出了外层循环,外层和内层循环各输出了一次
public static void testBreakFlag() { flag: for (int i = 0; i < 3; i++) { System.out.println("outer" + i); for (int j = 0; j < 3; j++) { if (j == 1) { break flag; } System.out.println("inner" + j); } } }
结果:
outer0 inner0
continue
1、跳过当前循环内容的处理,继续下一个循环内容的处理
2、结果标记使用,
如下为continue一般使用
public static void testContinue() { for (int i = 0; i < 3; i++) { System.out.println("outer" + i); for (int j = 0; j < 3; j++) { if (j == 1) { continue; } System.out.println("inner" + j); } } }
输出结果,外层循环输出一次,内层循环输出两次,内层循环跳过inner1的输出,如此共循环三次
outer0 inner0 inner2 outer1 inner0 inner2 outer2 inner0 inner2
使用标记
public static void testContinueFlag() { flag: for (int i = 0; i < 3; i++) { System.out.println("outer" + i); for (int j = 0; j < 3; j++) { if (j == 1) { continue flag; } System.out.println("inner" + j); } } }
输出结果,与不使用标记的break输出结果相同
outer0
inner0
outer1
inner0
outer2
inner0
总结:
break使用标记时,在结束内层循环的同时,也可以结束外层循环,可以对外层循环进行控制
continue使用标记时,满足内循环条件后,跳到了外层循环的指定位置继续执行,内循环的剩下的循环不再执行,在本例中类似break,但不能认为就是和break效果完全相同的
如果不使用break标记,也可以通过其他方式来实现出break标记的功能,如
public static void testBreakFlagSame() { boolean end = false; for (int i = 0; i < 3; i++) { if (end) { break; } System.out.println("outer" + i); for (int j = 0; j < 3; j++) { if (j == 1) { end = true; break; } System.out.println("inner" + j); } } }
输出结果与使用break标记相同
outer0 inner0