Java循环结构while 、do while、for循环语句学习小结

来源:互联网 发布:mac os x 卸载软件 编辑:程序博客网 时间:2024/05/18 06:40

循环语句可能包含四个部分


(并不是每个循环都非常清晰的分出了这四个部分)
1、初始化语句(init_statement)一条或多条语句,再循环之前执行,用于完成一些初始化工作。
2、循环条件(test_expression)一个用于决定是否执行循环体的Boolean表达式。
3、循环体(boy_statement)循环的主体,若只有一行语句可省略花括号{}。(但为了保证代码的可读性最好保留花括号)
4、迭代语句(iteration_statement)一次循环体执行结束之后,循环条件求值之前执行。通常用于控制循环条件中的变量。

一、while循环语句


while语法格式

[init_statement]//初始化语句while(test_expression){//循环条件statement;[iteration_statement]//迭代语句}

while循环的的注意事项:
1、如果while循环的循环体部分和迭代语句合并在一起可省略花括号,如果省略了循环体的花括号,那么while的循环条件紧控指到紧跟该循环条件的第一个分号处。

public class WhileTest {    public static void main(String[] args){        int count = 0;        int s = 0;        while (count <10)            s=count++ + 3;//先计算count +3后再加1  循环体与迭代语句合并        System.out.println(s);//结果只输出了一次12,即未参与while循环 在循环结束后执行输出    }}

2、一定要保证循环条件存在false时候,否则死循环。

int count = 0;while (count<10){System.out.println("死循环"+count);count--;//count的值越来越小}

3、空语句

int count = 0;while (count < 10);//习惯性的加分号,一个分号也是一个语句即空语句所以while循环在这里陷入死循环//分号后面的代码块与while循环无关系System.out.println("-----" + count);count++;}

do while 循环

do while 循环与while循环不同的是do while循环先执行循环体 在判断执行条件,即do while循环的循环体至少执行一次。

public class DoWhileTest{public static void main(String[] args){//定义一个量int count = 1;//执行do while循环do{System.out.println(count);count++;}while(count <10);System.out.println("循环结束");}

for循环

for循环比较简洁,大部分情况下可以代替while、do while循环,for循环的执行条件总比循环体多执行一次,即当执行条件语句返回false时不再执行循环体。
值得注意的是for循环的循环体并未与迭代语句放在一起,与while、dowhile不同,即使在执行循环体是遇到了continue语句结束了本次循环,迭代语句也会执行。
for循环允许同时指定多个初始化语句,循环条件也可以是一个包含逻辑运算符的表达式。
建议不要再循环体内修改循环变量,因为容易出错,如下

public class Fortest{public static void main(String[] args){  for(int count = 0;count <10;count++) {    System.out.print(count);   //循环体内修改循环变量count   count*0.1;    }    System.out.print("循环结束");  }}

如果真的需要访问、修改循环变量的值,建议重新的定义一个临时变量将循环变量的值赋值给临时变量,然后对临时变量的值修改。

for循环的圆括号中的两个分号是必需的,初始化语句、循环条件、迭代语句都可以省略,则此时循环条件默认为true即死循环

public class DataForTest{  public static void main(String[] args){//省略掉三个部分for( ;;){    //一直输出字符串aaaaaa      System.out.println("aaaaaa");      }    }   }

for循环的初始化语句(例如int i = 0;)也可以定义在循环体外,不过这将扩大初始化语句的作用域,后果是若该方法还有其他的循环则不能在使用该语句中的循环变量i。

for循环内定义的变量其做用于仅为该循环内,若想是在循环外再使用可以这样做

int tmp = 0;for(int i = 0; i< 10; i++)}{System.out.println(i);//使用tmp保存i的值tmp = i;}System.out.println("循环结束");

嵌套循环

嵌套循环就是将内部循环当做外部循环的循环体。只有内部循环条件为false时,才能跳出内层循环结束这一次的外循环进入下一次的外层循环。

控制循环结构

Java中提供了continue和break来控制循环结构,return的方法可以结束整个方法。
1、break
break是直接完全结束一个循环,跳出循环体。若是嵌套循环则可以使用标签来标识是结束整个外循环。如下

public class BreakTest{  public static void main(String[] args){outer:for (int i = 0;i < 5;i++){for (int j = 0;j <3;i++){ System.out.println("i的值为"+i+"j的值为"+j); if(j==1){ //跳出outer标签标识的循环    break outer;     }    }  } }}

运行结果:

i的值为0 j的值为0i的值为0 j的值为1

2、continue
continue只是忽略本次循环剩下的语句,接着开始下一次的循环;break是完全终止此循环

public class Continue{  public static void main(String[] args){    for(int i = 0;i<3;i++){    System.out.println("i的值为"+i);    if(i==1){    //忽略本次循环省略的语句     continue;     }     System.out.println("continue后的输出语句");  }}

运行结果:

i的值为 0continue后的输出语句i的值为 1i的值为 2continue后的输出语句

continue也可以使用标签,当使用continue用标签标注嵌套循环的外层循环时,结束的是本次外层循环。开始下一次外层循环。

public class CountinueTest2{  public static void main(String[] args){    //外层循环     outer:     for (int i = 0;i < 5;i++){        for(int j = 0;j < 3;j++){           System.out.println("i的值为"+i+"j的值为"+j);           //忽略continue后的语句           if(j==1){           continue outer;                 }           System.out.println("continue后的语句");               }          }        }     }

输出结果:

i的值为0j的值为0continue后的语句i的值为0j的值为1i的值为1j的值为0continue后的语句i的值为1j的值为1i的值为2j的值为0continue后的语句i的值为2j的值为1i的值为3j的值为0continue后的语句i的值为3j的值为1i的值为4j的值为0continue后的语句i的值为4j的值为1
原创粉丝点击