博客源为书写的载体,书写以对思维的缓存 正文

Java循环结构


在 Java 中为实现某些功能时经常需要重复执行特定的代码,顺序结构的程序语句只能被执行一次。如果想要同样的操作执行多次就需要使用循环结构。Java为我们提供了四种循环结构:while、do...while、for、增强for循环。

一:while循环

while是最基本的循环。

语法结构:
while( 布尔表达式 ){
  //循环内容
}
叮:只要布尔表达式为 true,循环就会一直执行下去,形成死循环。
举例:
public class TestWhile {
   public static void main(String[] args) {
       //10以内的偶数
       int i = 1;
       while(i <= 10){
           if((i & 1) == 0){
               System.out.println(i);
           }
           i++;
       }
   }
}

二:do...while循环

对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。do…while 循环和while循环相似,不同的是,do…while 循环至少会执行一次。

语法结构:
do {
   //循环内容
}while(布尔表达式);
叮:while和do...while的区别:do...while循环至少会执行一次。
举例:
public class TestDoWhile {
   public static void main(String[] args) {
       //10以内的偶数
       int i = 1;
       do {
           if ((i & 1) == 0) {
               System.out.print(i);
           }
           i++;
       } while (i <= 10);
   }
}

三:for循环

虽然所有的循环结构都可以用 while 或者 do...while表示,但Java提供了另一种语句--- for循环,使一些循环结构变得更加简单。

语法结构:
for(循环变量初始化; 循环条件; 循环变量变化) {    //代码语句
}
叮:for循环执行的次数是在执行前就确定的。
举例:
public class TestFor {
   public static void main(String[] args) {
       //10以内的偶数
       for(int i = 0; i <= 10; i++) {
           if ((i & 1) == 0) {
               System.out.print(i);
           }
       }
   }
}
注意:
(1)for关键字后面括号中的三个表达式必须用";"隔开,三个表达式都可以省略但";"不能省略。

(2)省略"循环变量初始化",可以在for语句之前由赋值语句进行变量初始化操作,如:
  int i = 0;
  for(; i <= 10; i++) {
      pass;
  }

(3)省略"循环条件",可能会造成循环将一直执行下去,形成死循环。

(4)省略“循环变量变化”,可以在循环体中进行循环变量的变化,如:
  for(int i = 0; i <= 10) {
      pass;
      i++;
  }

(5)"循环变量初始化和循环变量变化"部分,可以使用","来同时初始化或改变多个循环变量的值,如:
  for(int i = 1,j = 5; i <= 3; i++,j--) {
      System.out.println(i+"+"+j+"="+(i+j));
  }
  "初始化变量"部分同时对两个变量i和j赋初始值,"循环变量变化"部分也同时对两个变量进行变化
  结果为:1+5=6、2+4=6、3+3=6

(6)"循环条件部分"可以使用逻辑运算符组合的表达式来表示复杂判断条件,但一定注意运算的优先级,如:
  for(int i = 1; i < 10 && i != 5; i++) {
      pass;
  }

嵌套循环:循环结构中还可以声明循环,让内层循环结构整体充当外层循环的循环体。

public class TestFor {
   public static void main(String[] args) {
       //九九乘法表
       for (int i = 1; i <= 9; i++) {
           for (int j = 1; j <= i; j++) {
               System.out.print(j + "*" + i + "=" + i * j + "\t");
           }
           System.out.println();
       }
   }
}

四:增强for循环

Java5 引入了一种主要用于数组的增强型 for 循环。

语法结构:
for(声明语句 : 表达式){   //代码句子
}
(1)声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,
           其值与此时数组元素的值相等。
(2)表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
举例:
public class TestEnhanceFor {
   public static void main(String[] args) {
       int[] numbers = {10, 20, 30, 40, 50};        for(int x : numbers ){            System.out.print(x);
       }
           String[] names ={"Bob", "Mary", "Tom", "Jack"};        for(String name : names) {            System.out.print(name);        }
   }
}

五:终止循环

使用循环时要注意避免出现死循环,在无限循环结果内部一定要提供循环的终止条件或者终止命令。

1.break关键字

(1)break语句的使用场合主要是switch语句和循环结构。

(2)在循环结构中使用break语句,如果执行了break语句,那么就退出当前循环。

(3)如果在多重嵌套循环中使用break语句,当执行break语句的时候退出的是它所在的循环结构,对外层循环没有任何影响。

(4)如果循环结构里有switch语句,并且在switch语句中使用了break语句,则仅退出switch语句,不会退出外面的循环结构。

public class Test {
    public static void main(String args[]) {
        int [] numbers = {10, 20, 30, 40, 50}; 
        for(int x : numbers ) {
           // 当前只有一层循环,x等于30时跳出循环体
           if( x == 30 ) {
              break;
          }           System.out.print(x);
       }    }
}
结果为:10、20

2.continue关键字

(1)continue适用于任何循环控制结构中,作用是让程序立刻跳转到下一次循环的迭代。

(2)在for循环中,continue 语句使程序立即跳转到更新语句。

(3)在while或者do…while循环中,程序立即跳转到布尔表达式的判断语句。

public class Test {
    public static void main(String args[]) {
        int [] numbers = {10, 20, 30, 40, 50}; 
        for(int x : numbers ) {
           //当x等于30时不往下执行,跳转到for(int x : numbers )
           if( x == 30 ) {
              continue;
          }           System.out.print(x);
       }    }
}
结果为:10、20、40、50

3.return语句

return是一种特殊的终止命令,如果在程序中遇到return语句,那么代码就退出该函数的执行并返回到函数的调用处,当然也就退出了循环(无论这个return处于多少层循环之内)。如果是main()函数,那么结束整个程序的运行。

public class TestReturn {
   public static void main(String args[]) {
       new TestReturn().testReturn()
   }
   public void testReturn() {
       for (int i = 0; i < 5; i++) {
           //当i等于2时退出testReturn()函数
           if (i == 2) {
               return;
           }
           System.out.println(i);
       }
   }
}
结果为:0、1

六:最后

timg (1).gif

    • 曹达华1 2018年12月17日 22:14
    • 66666
    • 鬼王达1号[博主]: 2018年12月18日 11:00
    • 老铁,没毛病。