Java的三种结构(循环结构)

一.循环的概念,组成,及类型
  1.循环的概念: 程序通过某种条件,重复的执行一段逻辑代码
  2.循环的组成:
    i.初始部分:用以判断的变量
    ii.循环条件:决定是否继续循环的依据,一般为布尔表达式
    iii.循环操作:单次执行的逻辑代码或任务
    iv.迭代部分:控制循环条件改变的数据变化
    注意:被循环条件判断的变量才是循环的初始变量和迭代部分
  3.循环的类型
    i. do{}while();循环,一般用在不确定循环次数的场景下
    ii.while(){}循环,一般用在循环次数明确的场景下
    iii.for(;;;){}循环,一般用在循环次数明确的场景下
二.do{}while();循环
  语法:

    do{
      //逻辑代码;
     }while(布尔表达式);


  该循环的特点是:先执行大括号里的逻辑代码再进行while语句里的判断,若while()里的布尔表达式为真则接着执行,否则不执行
  因此该循环的循环次数为1-n次,也就是无论如何都会先执行一次do里的逻辑代码
三.while(){}循环
  语法: 

     while(布尔表达式){
        //逻辑代码;
      }


  该循环的特点是先判断布尔表达式的真假,若为真则执行逻辑代码,为假则结束循环
  因此该循环的循环次数是0-n次
四.for(;;){}循环
  语法:

 for(初始条件;布尔表达式;迭代部分){
    // 逻辑代码;
 }


  该循环特点为:可以一次性把循环的组成放入for语句中,for循环的执行过程为查看有无初始条件,然后进行布尔表达式的判断
  若为假则结束循环,若为真则进行逻辑代码的执行,然后执行迭代部分,再接着一次循环
  且若有需要可以把初始条件和迭代部分放在其他地方,但分号不可省略
  此循环的循环次数为0-n次
  注意:for循环可以用关键字break控制它,用法为:
  先给for循环命名,命名语法是 命名:for(;;;){}
  然后可以用 break 命名;
  打断该循环,但好像代码界里对此方法颇有诟病
  continue无此特殊用法
五.流程控制关键字
  1.break
    该关键字用于跳出循环结束该循环,特殊用法放在了for循环介绍里,执行流程为:
    程序读到break关键字则会去寻找放入了该语句的循环体,根据就近原则跳出拥有该关键字的最近的循环
    如

while(true){
          break;
       int a = 5;    
        }
  /*
   *
在该循环中,若无break则是一个死循环,但有了break之后
   *程序判断入口表达式为真,进去执行代码时发现了break    *则接着直接跳出该循环,连对接下来循环内变量 a 的初始化赋值都不会进行
  
*/


  2.continue
    该关键字用于跳出本次循环进行下一次循环,执行流程为:
    程序读到continue 关键字则会跳出本次循环,然后根据就近原则进行下一次循环的判断执行
    如:

 while(i){ //假设已经给i赋值为true
   i = false
   continue;
   i = true;
 }//在该循环中,程序判断入口表达式为真,进入循环执行逻辑代码,给入口变量赋值为假,然后程序执行了continue
  //程序直接跳出该次循环,不执行后续语句,然后进行下一次的循环,但入口值已经改变,该循环结束,也不会读取i = true
  //与break的区别是,break直接结束,不会再进行下一次循环,更不会有下一次循环的入口判断,而continue则会


六.循环的嵌套
  一般的,循环可以相互嵌套,用for举例 如:
    

for(int i = 0;i < 5;i++){
      for(int j = 0;j < 5;j++){
        //代码体;
      }
        //代码体;
    }
  /*
  *在本循环中,执行程序为,第一个循环的初始值i 为0,显然满足入口条件,接着进入第一层循环体,然后进行第二个循环体的循环
  *而第二层循环体的入口条件显然也满足,因此在该示例中第一层的第一次循环则要完成第二层的全部循环,也就是说外层循环一次
  *内层要把所有的循环次数都循环完成,然后外层开始第二次循环判断,所以这一整个大的循环体循环进行次数为 若外层为 i 次
  *内层为 j 次,则总循环次数为 i*j 
  *注意,在这种大的循环体中 break,continue关键字都是根据就近原则使用 (除了对某个循环赋值后 用break打断)
  */
原文地址:https://www.cnblogs.com/Lzzycola/p/13336334.html