## 导语 文章系统讲解了Java中while、for、do-while三类循环的应用场景与执行逻辑(包括解决数学计算、数据遍历等问题),对比了三者特性,并详解了数组的定义、默认值、遍历、查找、排序等核心操作,强调循环与数组在实际开发中的结合运用。 ## 一、while循环解决数学问题 1、求1~10之间的偶数 ```java // 方法一 int n = 0; while (n < 10) { n += 2; System.out.println(n); } //方法二 n = 0; while (n < 10) { n++; if (n % 2 == 0) { System.out.println(n); } } ``` 2、求20~50之间所有7的倍数的和 ```java int n = 20; int sum = 0; while (n <= 50) { if (n % 7 == 0) { sum += n; } n++; } System.out.println(sum); ``` 3、录入4名学员的成绩计算总分平均分 ```java import java.util.Scanner; int n = 0; int sum = 0; Scanner input = new Scanner(System.in); while (n < 4) { System.out.printf("请输入第%d名学员成绩:", n + 1); sum += input.nextInt(); n++; } double avg = (double) sum / 4; System.out.printf("%d名学员成绩总分:%d,平均分:%1.2f", n, sum, avg); ``` ## 二、for循环 1、循环结构 ```java for(①循环变量初始化;②条件判断;④更新循环变量){ ③结构体; } // 语句执行顺序 // ①→②→(true)③→④→转跳到② // ....↓(false) ``` 2、死循环 ```java for(;;){ 结构体; } ``` 3、增强for ```java // 遍历数组 int[] nums = {1,2,3,4}; for (int num : nums){ System.out.println(num); } ``` ## 三、do while语句 1、语法结构 ```java do{ 结构体; 循环变量变化; }while(循环条件); ``` 2、特点 先执行后判断,循环条件不成立时,循环体也会执行一次。 ## 四、三种循环对比 | **特性** | **`for` 循环** | **`while` 循环** | **`do-while` 循环** | | ------------------- | ------------------------------------ | ---------------------------------- | -------------------------- | | **语法结构** | `for(初始化;条件;迭代){...}` | `while(条件){...}` | `do{...} while(条件);` | | **执行顺序** | 先判断条件 → 再执行循环体 | 先判断条件 → 再执行循环体 | 先执行循环体 → 再判断条件 | | **循环次数** | 明确循环次数(如遍历数组) | 不明确循环次数(条件驱动) | 至少执行1次(后验条件) | | **初始化/迭代位置** | 在括号内(`初始化`和`迭代`独立区域) | 需在循环外声明变量,循环内手动迭代 | 同`while` | | **适用场景** | 计数器控制循环 | 条件驱动循环 | 需至少执行一次的场景 | | **内存管理** | 循环结束自动释放初始化变量 | 条件变量需在循环外定义 | 同`while` | ## 五、控制流语句 1、break:搭配switch或循环,即为结束该结构执行。 2、continue:搭配循环,可跳过本次循环进入下一次循环。 ## 六、数组 1、特点 ①属于引用数据类型; ②一个数组类型的变量可存多个值; ③存储数据类型相同的一组数据; ④有序的(index); ⑤可重复的。 2、定义数组 ```java // 语法1:先声明,后申请空间 type[] arrName; // 或用 type arrName[]; arrName = new type[length]; // 语法2:声明同时申请空间 type[] arrName = new type[length]; // 语法3:声明同时赋值 type[] arrName = {value1,value2}; // 或用 type[] arrName = new type[]{value1,value2}; // tips:数组声明是在栈中创建一个变量(arrName)并写入值(申请的空间)在堆中的地址 ``` 3、数组创建后,jvm会设置其默认值 type->value int->0 double,float->0.0 char->空格 boolean->false String->null 4、数组的经典问题 ①遍历数组 ```java // arrName.length => arrName的长度 // 一般方法 for(int i = 0;i < arrName.length;i++){ System.out.println(arrName[i]); } // 增强for for(int value : arrName){ System.out.println(value); } ``` ②动态赋值 ```java int[] arr = new int[4]; for(int i = 0;i < arr.length;i++){ arr[i] = i; } ``` ③累加求和 ```java int sum = 0; int[] arr = {1,2,3,4}; for(int i = 0;i < arr.length;i++){ sum += arr[i]; } double avg = (double) sum / arr.length; ``` ④查找元素 ```java int[] arr = {1,2,3,4}; int count = 0; boolean found = false; // 是否有3 for(int i = 0;i < arr.length;i++){ if(arr[i] == 3){ found = true; break; } } // 有几个3 for(int i = 0;i < arr.length;i++){ if(arr[i] == 3){ count++; } } ``` ⑤求最值问题 ```java // 最大值 int[] arr = {1,4,3,2,6,9} int max = arr[0]; for(int i = 1;i < arr.length;i++){ if(arr[i] > max){ max = arr[i]; } } // 最小值 int min = arr[0]; for(int i = 1;i < arr.length;i++){ if(arr[i] < min){ min = arr[i]; } } ``` ⑥数组排序 ```java // 非汉字字符串可按照a→z的顺序排列 import java.util.Arrays; int[] arr = {1,4,2,3,5}; Arrays.sort(arr); // 升序 1,2,3,4,5 ``` ## 笔记、代码附件 [香肠狗网盘][1]https://pan.soki.me/s/j7hP [1]: https://pan.soki.me/s/j7hP Loading... ## 导语 文章系统讲解了Java中while、for、do-while三类循环的应用场景与执行逻辑(包括解决数学计算、数据遍历等问题),对比了三者特性,并详解了数组的定义、默认值、遍历、查找、排序等核心操作,强调循环与数组在实际开发中的结合运用。 ## 一、while循环解决数学问题 1、求1~10之间的偶数 ```java // 方法一 int n = 0; while (n < 10) { n += 2; System.out.println(n); } //方法二 n = 0; while (n < 10) { n++; if (n % 2 == 0) { System.out.println(n); } } ``` 2、求20~50之间所有7的倍数的和 ```java int n = 20; int sum = 0; while (n <= 50) { if (n % 7 == 0) { sum += n; } n++; } System.out.println(sum); ``` 3、录入4名学员的成绩计算总分平均分 ```java import java.util.Scanner; int n = 0; int sum = 0; Scanner input = new Scanner(System.in); while (n < 4) { System.out.printf("请输入第%d名学员成绩:", n + 1); sum += input.nextInt(); n++; } double avg = (double) sum / 4; System.out.printf("%d名学员成绩总分:%d,平均分:%1.2f", n, sum, avg); ``` ## 二、for循环 1、循环结构 ```java for(①循环变量初始化;②条件判断;④更新循环变量){ ③结构体; } // 语句执行顺序 // ①→②→(true)③→④→转跳到② // ....↓(false) ``` 2、死循环 ```java for(;;){ 结构体; } ``` 3、增强for ```java // 遍历数组 int[] nums = {1,2,3,4}; for (int num : nums){ System.out.println(num); } ``` ## 三、do while语句 1、语法结构 ```java do{ 结构体; 循环变量变化; }while(循环条件); ``` 2、特点 先执行后判断,循环条件不成立时,循环体也会执行一次。 ## 四、三种循环对比 | **特性** | **`for` 循环** | **`while` 循环** | **`do-while` 循环** | | ------------------- | ------------------------------------ | ---------------------------------- | -------------------------- | | **语法结构** | `for(初始化;条件;迭代){...}` | `while(条件){...}` | `do{...} while(条件);` | | **执行顺序** | 先判断条件 → 再执行循环体 | 先判断条件 → 再执行循环体 | 先执行循环体 → 再判断条件 | | **循环次数** | 明确循环次数(如遍历数组) | 不明确循环次数(条件驱动) | 至少执行1次(后验条件) | | **初始化/迭代位置** | 在括号内(`初始化`和`迭代`独立区域) | 需在循环外声明变量,循环内手动迭代 | 同`while` | | **适用场景** | 计数器控制循环 | 条件驱动循环 | 需至少执行一次的场景 | | **内存管理** | 循环结束自动释放初始化变量 | 条件变量需在循环外定义 | 同`while` | ## 五、控制流语句 1、break:搭配switch或循环,即为结束该结构执行。 2、continue:搭配循环,可跳过本次循环进入下一次循环。 ## 六、数组 1、特点 ①属于引用数据类型; ②一个数组类型的变量可存多个值; ③存储数据类型相同的一组数据; ④有序的(index); ⑤可重复的。 2、定义数组 ```java // 语法1:先声明,后申请空间 type[] arrName; // 或用 type arrName[]; arrName = new type[length]; // 语法2:声明同时申请空间 type[] arrName = new type[length]; // 语法3:声明同时赋值 type[] arrName = {value1,value2}; // 或用 type[] arrName = new type[]{value1,value2}; // tips:数组声明是在栈中创建一个变量(arrName)并写入值(申请的空间)在堆中的地址 ``` 3、数组创建后,jvm会设置其默认值 type->value int->0 double,float->0.0 char->空格 boolean->false String->null 4、数组的经典问题 ①遍历数组 ```java // arrName.length => arrName的长度 // 一般方法 for(int i = 0;i < arrName.length;i++){ System.out.println(arrName[i]); } // 增强for for(int value : arrName){ System.out.println(value); } ``` ②动态赋值 ```java int[] arr = new int[4]; for(int i = 0;i < arr.length;i++){ arr[i] = i; } ``` ③累加求和 ```java int sum = 0; int[] arr = {1,2,3,4}; for(int i = 0;i < arr.length;i++){ sum += arr[i]; } double avg = (double) sum / arr.length; ``` ④查找元素 ```java int[] arr = {1,2,3,4}; int count = 0; boolean found = false; // 是否有3 for(int i = 0;i < arr.length;i++){ if(arr[i] == 3){ found = true; break; } } // 有几个3 for(int i = 0;i < arr.length;i++){ if(arr[i] == 3){ count++; } } ``` ⑤求最值问题 ```java // 最大值 int[] arr = {1,4,3,2,6,9} int max = arr[0]; for(int i = 1;i < arr.length;i++){ if(arr[i] > max){ max = arr[i]; } } // 最小值 int min = arr[0]; for(int i = 1;i < arr.length;i++){ if(arr[i] < min){ min = arr[i]; } } ``` ⑥数组排序 ```java // 非汉字字符串可按照a→z的顺序排列 import java.util.Arrays; int[] arr = {1,4,2,3,5}; Arrays.sort(arr); // 升序 1,2,3,4,5 ``` ## 笔记、代码附件 [香肠狗网盘][1]https://pan.soki.me/s/j7hP [1]: https://pan.soki.me/s/j7hP 最后修改:2025 年 10 月 13 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 👆请简单粗暴地爱我。