1. 循环结构概述

Java 中有三种循环结构:forwhiledo...while,用于重复执行某段代码,避免重复造轮子。

2. for 循环

2.1 格式

for (初始化语句; 循环判断条件; 更新循环变量) {
    循环体语句;
}
  • 2.1.1 初始化语句:循环开始前执行一次,通常声明并初始化计数变量,如 int i = 0
  • 2.1.2 循环判断条件:每次循环前判断,为 true 则继续,为 false 则退出
  • 2.1.3 更新循环变量:每次循环体执行完后执行,如 i++ / i--

2.2 典型练习

  • 2.2.1 输出 1 ~ 10
  for (int i = 1; i <= 10; i++) {
      System.out.println(i);
  }
  • 2.2.2 输出 10 ~ 1(倒序)
  for (int i = 10; i >= 1; i--) {
      System.out.println(i);
  }
  • 2.2.3 输出 100 以内偶数:结合 % 取模判断
  for (int i = 0; i <= 100; i++) {
      if (i % 2 == 0) {
          System.out.println(i);
      }
  }
  • 2.2.4 求 1 ~ 10 之和:在循环外声明累加变量,循环内累加
  int sum = 0;
  for (int i = 1; i <= 10; i++) {
      sum += i;
  }
  System.out.println("sum = " + sum); // 55
  • 2.2.5 求 5 的阶乘:累乘变量初始值必须为 1,不能为 0
  int total = 1;
  for (int i = 1; i <= 5; i++) {
      total *= i;
  }
  System.out.println("total = " + total); // 120

3. while 循环

3.1 格式

初始化语句;
while (循环判断条件) {
    循环体语句;
    更新循环变量;
}
  • 3.1.1 与 for 的区别while 将初始化和更新写在循环体外,适合不确定循环次数的场景

3.2 无限循环

当循环终止条件较复杂时,可使用 while(true) 构造无限循环,在内部控制退出。

  • 3.2.1 示例——折纸问题:一张厚 0.1mm 的纸,折叠多少次能达到珠穆朗玛峰的高度(8848860mm)
  int total = 0;
  double len = 0.01;
  while (true) {
      if (len >= 884886) {
          break;
      }
      len *= 2;
      total++;
      System.out.println("len = " + len + "  total = " + total);
  }

4. do…while 循环

  • 4.1.1 格式
  初始化语句;
  do {
      循环体语句;
      更新循环变量;
  } while (循环判断条件);
  • 4.1.2 核心特点:先执行循环体,再判断条件,无论条件是否成立,循环体至少执行一次

5. 示例代码

5.1 Demo03

package com.itszt.day02;
public class Demo03 {
    public static void main(String[] args) {
        // for 循环基本格式
        for (int i = 0; i < 100; i++) {
            System.out.println("i = " + i);
        }
 
        // 求 5 的阶乘
        int total = 1;
        for (int i = 1; i <= 5; i++) {
            total *= i;
        }
        System.out.println("total = " + total); // 120
    }
}

5.2 Demo04

package com.itszt.day02;
public class Demo04 {
    public static void main(String[] args) {
        // while 基本用法
        int num = 1;
        while (num <= 10000) {
            System.out.println(num);
            num++;
        }
 
        // while(true):折纸问题
        int total = 0;
        double len = 0.01;
        while (true) {
            if (len >= 884886) {
                break;
            }
            len *= 2;
            total++;
            System.out.println("len = " + len + "  total = " + total);
        }
    }
}

6. 总结

循环类型判断时机适用场景
for先判断再执行循环次数确定时首选
while先判断再执行循环次数不确定时首选
while(true)无条件循环终止条件复杂,内部控制退出
do...while先执行再判断至少需要执行一次时使用