`
wangleide414
  • 浏览: 590612 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

break continue 用法

 
阅读更多

 

1.一般的用法:continue 和break用于跳出循环。

 

continue指结束当前1次循环的继续执行,计数器步进,循环操作继续。如下

Java代码   收藏代码
  1. for ( int i = 0; i < 10 ; i++){   
  2.   
  3.    … //statements   
  4.   
  5.    if( i == 3)   
  6.       continue;   
  7.   
  8.    … //other statements   
  9. }   

当条件i == 3成立后other statements将不会再执行,而是i步进后跳回到for循环继续往下执行

 

break指结束当前所有循环,并且循环计数器不再步进,如下

Java代码   收藏代码
  1. for ( int i = 0; i < 10 ; i++){   
  2.   
  3.    … //statements   
  4.   
  5.    if( i == 3)   
  6.       break;   
  7.   
  8.    … //other statements   
  9.   
  10. }   
  11. … //outer statements   

当条件i == 3成立后,跳出for循环往下执行outer statements,并且i不再步进,维持3不变,这个地方类似于return的作用。

 

另外break和continue只能作用于最内层循环,即如果多层嵌套的话,对外层循环不起作用。break和continue只用于for、while、do…while、switch语句,其他地方都不能使用,且二者的使用是为了能简化程序,如果使用后程序反而复杂化就要考虑改用其他实现了。

 

2.结合标签的使用

 

说起标签,大家一定会想到goto语句。在java中goto是保留关键字但不使用,所以也可以说java中没有goto。但是有些情况下要用到类似goto这种功能的语句,java为了解决这个问题,提出了标签的概念,通过break、continue和标签的结合使用完美的解决了goto的功能。

 

在java中有对标签使用的严格控制:标签只能用于“刚好在迭代循环之前”。在标签和紧接着的循环之间插入任何代码都是不好的实现!!从而避免了goto的臭味遍布程序。

 

Java代码   收藏代码
  1. int i = 0;     
  2. outer:    //标签     
  3.     for(; true; ){     
  4.         for(; i < 10; i++){     
  5.             System.out.println("i = " + i);     
  6.             if( i == 2 ){     
  7.                 System.out.println("continue");     
  8.                 continue;     
  9.             }     
  10.     
  11.             if( i == 3 ){     
  12.                 System.out.println("break");     
  13.                 i++;       // statement1     
  14.                 break;     
  15.             }     
  16.     
  17.             if( i == 7){     
  18.                 System.out.println("continue outer");     
  19.                 i++;           // statement2     
  20.                 continue outer;     
  21.             }     
  22.     
  23.             if( i == 8 ){     
  24.                 System.out.println("break innner");     
  25.                 break outer;     
  26.             }     
  27.             System.out.println("continue inner");     
  28.         }     
  29.     }    

 需要注意的程序中的statement1和statement2,因为break和continue outer结束了内层循环,并且跳过了i步进,所以这个地方让i自增,以避免死循环。当i == 8成立后直接跳出外层循环,结束所有迭代。这里也可以看出,“使用标签的唯一理由是因为有循环嵌套的存在!”

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics