循环就是重复的意思,它是编程中的基石,它使程序能够重复执行某段代码,直至满足特定条件为止。
在Java中,for
循环是一种常用的循环结构,它以紧凑的形式实现了迭代过程。
一、for循环基础
1.1 for循环简介
for
循环在Java中用于控制代码块重复执行固定次数。它由4个部分组成:
- ①初始化语句,循环开始前执行一次,通常用于设置循环计数器的初始值
- ②条件判断语句,循环开始后,每次循环前执行,如果结果为
true
,则执行循环体;否则,循环结束。 - ③条件控制语句,循环开始后,每次循环后执行,通常用于改变循环计数器的值
- ④循环体语句,循环开始后,每次循环执行
for (初始化语句; 条件判断; 条件控制语句) {
// 循环体,需要重复执行的代码
}
1.2 循环的流程
- ①开始循环,执行初始化语句,初始化语句可以缺省
- ②执行条件判断语句,结果为true,执行本次循环;为false,终止循环。条件判断语句可以缺省,此时会无限循环。
- ③执行循环体语句,循环体语句为空的循环称为空循环
- ④执行条件控制语句,条件控制语句可以缺省
- ⑤跳转到第②步
1.3 循环的分类
根据条件判断语句是否恒为true,将循环分为两类:
- 有限循环,循环的次数有限,条件判断语句为false时,终止循环
- 无限循环,循环的次数无限,循环不会终止。在实际开发中,常使用这个技巧实现进程、线程常驻
二、break和continue
1,循环终止
循环终止分为两种情况:
- ①自动终止,条件判断语句为false时,循环自动终止。如下循环,执行5次后,自动终止。
for(int i = 1; i <= 5; i++) {
System.out.println(i);
}
- ②主动终止,执行到循环体中
break
语句时,循环终止。如下循环,当i=2时,会在执行break
后终止循环:
for(int i = 1; i <= 5; i++) {
if(i == 2) {
break;// 终止循环
}
System.out.println(i);
}
2,continue
在Java中,continue
语句用于跳过当前循环体中剩余的部分,直接开始下一次循环的迭代。
它通常用于在满足某个特定条件时,忽略循环体中剩余的代码,直接检查循环条件以决定是否继续执行下一轮循环。
这对于需要在循环内部基于条件跳过某些不必要的处理步骤时非常有用。
基本语法
for (初始化; 条件; 更新) {
if (条件满足) {
continue; // 跳过当前循环体的剩余部分
}
// 循环体的其余部分
}
示例
假设我们想要打印1到10之间的所有偶数,可以使用continue
语句来跳过奇数:
public class PrintEvenNumbers {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i % 2 != 0) { // 如果i是奇数
continue; // 跳过奇数,直接进行下一次循环
}
System.out.println(i); // 只打印偶数
}
}
}
在这个例子中,当i
是奇数时,if
条件满足,执行continue
语句,跳过了打印语句,直接进行下一次循环迭代,因此程序只打印出1到10之间的偶数。
注意事项
continue
只能在循环体内使用,如果在非循环结构中出现会编译错误。- 使用
continue
时,要小心处理循环变量的更新逻辑,避免无意中创建无限循环。 - 过度使用
continue
可能会使代码逻辑变得难以理解和维护,应当在确实需要时才使用。
三,典型用法
1. 计算指定范围内数字的和
需求描述:编写一个Java程序,计算从1到100(包括1和100)所有整数的和。
代码实现:
public class SumOfNumbers {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("从1到100所有整数的和为:" + sum);
}
}
2. 打印九九乘法表
需求描述:创建一个Java应用程序,打印出标准的9x9乘法表。
代码实现:
public class MultiplicationTable {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "x" + i + "=" + (i * j) + "\t");
}
System.out.println(); // 换行
}
}
}
3. 查找数组中的最大值
需求描述:给定一个整数数组,使用Java编程找出并打印出数组中的最大值。
代码实现:
public class FindMaxValue {
public static void main(String[] args) {
int[] numbers = {34, 56, 89, 23, 12, 67, 78, 45};
int max = numbers[0];
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
}
System.out.println("数组中的最大值为:" + max);
}
}
4. 字符串反转
需求描述:编写一个Java程序,接收用户输入的字符串,并输出该字符串的反转形式。
代码实现:
import java.util.Scanner;
public class ReverseString {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String input = scanner.nextLine();
String reversed = "";
for (int i = input.length() - 1; i >= 0; i--) {
reversed += input.charAt(i);
}
System.out.println("反转后的字符串为:" + reversed);
}
}
5. 素数判断
需求描述:设计一个Java程序,判断用户输入的数字是否为素数(质数)。
代码实现:
import java.util.Scanner;
public class PrimeNumberCheck {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个正整数:");
int number = scanner.nextInt();
boolean isPrime = true;
if (number <= 1) {
isPrime = false;
} else {
for (int i = 2; i <= Math.sqrt(number); i++) {
if (number % i == 0) {
isPrime = false;
break;
}
}
}
if (isPrime) {
System.out.println(number + " 是素数。");
} else {
System.out.println(number + " 不是素数。");
}
}
}
四、最佳实践与注意事项
4.1 避免意外的无限循环
确保循环有一个明确的终止条件,防止形成无限循环,消耗系统资源。
4.2 适时使用break和continue
- break:用于立即跳出循环,结束整个循环过程。
- continue:跳过当前循环的剩余部分,直接开始下一轮循环。
4.3 代码清晰与可读性
- 尽量保持循环体的简洁,避免过深的嵌套。
- 适时注释,解释循环的目的和逻辑,提高代码的可读性。
4.4 性能考量
- 在循环中尽量减少对外部资源的访问,如数据库查询,以减少性能开销。
- 考虑循环变量的数据类型和范围,选择合适的数据类型可以提高效率。
五、总结
for
循环是Java编程中处理重复任务的强大工具,通过灵活运用其基本形式、增强形式及特殊变体,可以解决各种循环需求。