1、循环语句就是让计算机依据条件做循环计算,在条件满足时继续循环,条件不满足时,退出循环。

  while条件循环就是一种循环方式。

  格式:  while(条件){ //循环语句 }

1 public class Main {
 2     public static void main(String[] args) {
 3         int sum = 0; // 累加的和,初始化为0
 4         int n = 1;
 5         while (n <= 100) { // 循环条件是n <= 100
 6             sum += n; // 把n累加到sum中
 7             n ++; // n自身加1
 8         }
 9         System.out.println(sum); // 5050
10     }
11 }

  要避免死循环,若while循环是个死循环,java的int类型有最大值,达到最大值后,再加就会变成负数,结果可能会意外退出while循环。

2、练习:使用while循环计算从m到n的和

1 public class Main {
 2     public static void main(String[] args) {
 3         int sum=0;
 4         int m=20;
 5         int n=100;
 6         while(m<=n) {
 7             sum+=m;
 8             m++;
 9         }
10         System.out.println("m到n的和为:"+sum);
11     }
12 }

 

3、do while循环

  while循环先判断循环条件,再执行循环,而do while循环则是先执行循环,在判断条件,条件满足就继续循环,不满足就退出循环。

  格式:do{

        //循环语句  

      }while(条件表达式);

1 public class Main {
 2     public static void main(String[] args) {
 3         int sum = 0;
 4         int n = 1;
 5         do {
 6             sum = sum + n;
 7             n ++;
 8         } while (n <= 100);
 9         System.out.println(sum);
10     }
11 }
1 //计算从m到n的和
 2 public class Main {
 3     public static void main(String[] args) {
 4         int sum = 0;
 5         int m = 20;
 6         int n = 100;
 7         // 使用do while计算M+...+N:
 8         do {
 9              sum+=m;
10              m++;
11          }while(m<=n);
12         System.out.println(sum);
13     }
14 }

 

4、for循环:使用计数器实现循环。for循环会先初始化计数器,,然后再每次循环前检测循环条件,在每次循环后更新计数器,计数器变量通常命名为i.

  格式:for(初始条件;循环检测条件;循环后更新计数器){  //执行语句;  }

public class Main {
    public static void main(String[] args) {
        int sum = 0;
        for (int i=1; i<=100; i++) {
            sum = sum + i;
        }
        System.out.println(sum);
    }
}
1 //对一个整型数组的所有元素求和
 2 public class Main {
 3     public static void main(String[] args) {
 4         int[] ns = { 1, 4, 9, 16, 25 };
 5         int sum = 0;
 6         for (int i=0; i<ns.length; i++) {  
 7             System.out.println("i = " + i + ", ns[i] = " + ns[i]);
 8             sum = sum + ns[i];
 9         }
10         System.out.println("sum = " + sum);
11     }
12 }

 

5、for each循环:遍历数组时,可以访问每个元素的值。相比for循环,for each循环的变量n不再是计数器,而是直接对应到数组的每个元素。但是这个循环无法指定遍历顺序,也无法获取数组的索引。

除了数组外,for each循环能遍历所有“可迭代”的数据类型,包括后面介绍的List、Map等。

  格式:for(type 元素:数组名){  //循环语句 }

1 public class Main {
2     public static void main(String[] args) {
3         int[] ns = { 1, 4, 9, 16, 25 };
4         for (int n : ns) {
5             System.out.println(n);
6         }
7     }
8 }

 

6、练习

1 //给定一个数组,用for循环倒序输出每一个元素
2 public class Main {
3     public static void main(String[] args) {
4         int[] nums= {1,5,6,7,8,9,3};
5         for(int i=nums.length-1;i>=0;i--) {
6             System.out.print(nums[i]+" ");
7         }
8     }
9 }
// 利用 for each循环对数组每个元素求和
public class Main {
    public static void main(String[] args) {
        int[] ns = { 1, 4, 9, 16, 25 };
        int sum = 0;
        for(int i:nums) {
            sum+=i;
            //i++;
        }
        System.out.println(sum); // 55
    }
}

 

6、break和continue 

  * break是跳出当前循环;  

  * continue是提前结束本次循环,直接进入下一循环

1 public class Main {
 2     public static void main(String[] args) {
 3         int sum = 0;
 4         for (int i=1; i<=10; i++) {
 5             System.out.println("begin i = " + i);
 6             if (i % 2 == 0) {
 7                 continue; // continue语句会结束本次循环
 8             }
 9             sum = sum + i;
10             System.out.println("end i = " + i);
11         }
12         System.out.println(sum); // 25
13     }
14 }