java之continue,break,goto 先说goto,goto是java中保留关键字,实际并未使用,goto在c中很强大,直接中断当前执行流程跳转到标记所在的流程点开始执行,但是这种能力不好掌控。 java中可以使用continue和break加标签达到类似的效果。
continue continue在循环内部使用时,中断后面的代码执行,直接开始下一次循环。结合标签使用时,直接执行标签后面的循环代码的下一次循环:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 public static void main (String[] args) { for (int j = 0 ; j < 10 ; j++) { if (j % 2 == 0 ) continue ; System.out.print(j); } System.out.println("\n===========" ); outer: for (int i = 0 ; i < 10 ; i++) { if (i % 2 == 0 ) continue outer; System.out.print(i); } System.out.println("\n===========" ); outer: for (int i = 0 ; i < 5 ; i++) { for (int j = i; j < 5 ; j++) { if (j % 2 == 0 ) continue outer; System.out.println("inner:" + j); } System.out.println("outer:" + i); } }
break break在循环内部使用时,中断后面代码执行并跳出当前 循环,执行循环后面的代码,结合标签使用时,表示结束标签后的代码块执行,转而执行后面的代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 for (int i = 0 ; i < 5 ; i++) { if (i>2 )break ; System.out.print(i); } for (int i = 0 ; i < 2 ; ) { while (i++<2 ){ if (i<2 ) break ; System.out.println("inner not break:" +i); } System.out.println("outer:" +i); } outer: for (int i=0 ; i <5 ; i++) { for (int j = 0 ; j <5 ; j++) { if (i==0 &&j==3 )break outer; System.out.println("break-inner[j]:" +j); } System.out.println("break-outer[i]:" +i); } System.out.println("break-end" );
continue和break结合 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 level_1: for (int j = 0 ; j <2 ; j++) { level_2: for (int k = 0 ; k <3 ; k++) { if (k==2 )break level_1; level_3: for (int l = 0 ; l <2 ; l++) { if (k==1 )continue level_2; for (int m = 0 ; m <2 ; m++) { if (m==1 )break level_3; System.out.println("level_4[m]-" +m); } System.out.println("level_3[l]-" +l); } System.out.println("level_2[k]-" +k); } System.out.println("level_1[j]-" +j); }