掌握for循环的语法结构、执行流程和实际应用
for循环是Java中最常用的循环结构之一,它提供了一种简洁的方式来重复执行代码块。for循环特别适合在已知循环次数的情况下使用。
for (初始化; 条件判断; 更新) {
// 循环体
}
int i = 0 // 声明并初始化循环变量
i < 10 // 循环继续的条件
i++ // 更新循环变量
执行初始化表达式,通常是声明和初始化循环变量
检查循环条件,如果为true则继续,为false则退出
执行大括号内的代码块
执行更新表达式,然后返回步骤2
// 打印数字1到10
for (int i = 1; i <= 10; i++) {
System.out.println("数字: " + i);
}
// 计算1到100的和
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("1到100的和: " + sum);
int[] numbers = {1, 2, 3, 4, 5};
// 正向遍历
for (int i = 0; i < numbers.length; i++) {
System.out.println("索引 " + i + ": " + numbers[i]);
}
// 反向遍历
for (int i = numbers.length - 1; i >= 0; i--) {
System.out.println("索引 " + i + ": " + numbers[i]);
}
String text = "Hello Java";
// 遍历字符串中的每个字符
for (int i = 0; i < text.length(); i++) {
char ch = text.charAt(i);
System.out.println("位置 " + i + ": " + ch);
}
// 统计元音字母数量
int vowelCount = 0;
for (int i = 0; i < text.length(); i++) {
char ch = Character.toLowerCase(text.charAt(i));
if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
vowelCount++;
}
}
System.out.println("元音字母数量: " + vowelCount);
// 计算n的阶乘
int n = 5;
long factorial = 1;
for (int i = 1; i <= n; i++) {
factorial *= i;
}
System.out.println(n + "! = " + factorial);
// 计算斐波那契数列
int count = 10;
int a = 0, b = 1;
System.out.print("斐波那契数列: " + a + " " + b + " ");
for (int i = 2; i < count; i++) {
int next = a + b;
System.out.print(next + " ");
a = b;
b = next;
}
嵌套for循环是指在一个for循环内部包含另一个for循环。这种结构常用于处理二维数据、生成图案或进行复杂的数据处理。
嵌套循环的时间复杂度是各层循环次数的乘积。例如,两层各循环n次的嵌套循环时间复杂度为O(n²),要谨慎使用。
// 打印直角三角形
int rows = 5;
for (int i = 1; i <= rows; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("* ");
}
System.out.println(); // 换行
}
// 打印等腰三角形
for (int i = 1; i <= rows; i++) {
// 打印空格
for (int j = 1; j <= rows - i; j++) {
System.out.print(" ");
}
// 打印星号
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// 遍历二维数组
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
// 计算矩阵对角线元素之和
int diagonalSum = 0;
for (int i = 0; i < matrix.length; i++) {
diagonalSum += matrix[i][i]; // 主对角线
}
System.out.println("对角线元素之和: " + diagonalSum);
// 打印九九乘法表
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循环示例程序,展示了各种for循环的使用场景:
// 不推荐:每次循环都计算length
for (int i = 0; i < array.length; i++) {
// 处理array[i]
}
// 推荐:提前计算length
int length = array.length;
for (int i = 0; i < length; i++) {
// 处理array[i]
}
// 更推荐:使用for-each循环
for (int element : array) {
// 处理element
}