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

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


(并不是每个循环都非常清晰的分出了这四个部分)
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的值为0
i的值为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的值为 0
continue后的输出语句
i的值为 1
i的值为 2
continue后的输出语句

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的值为0
continue后的语句
i的值为0j的值为1
i的值为1j的值为0
continue后的语句
i的值为1j的值为1
i的值为2j的值为0
continue后的语句
i的值为2j的值为1
i的值为3j的值为0
continue后的语句
i的值为3j的值为1
i的值为4j的值为0
continue后的语句
i的值为4j的值为1

你可能感兴趣的:(java基础学习)