java循环

Java 循环结构全解析及实战案例


一、循环结构概览

Java 提供 4 种循环结构2 种控制语句,构成完整的循环控制体系:

循环类型特点适用场景
for明确循环次数数组遍历、计数器
增强型 for简化集合遍历集合/数组迭代
while先判断后执行条件不确定循环
do-while先执行后判断至少执行一次的操作

二、基础循环结构详解

1. for 循环(最常用)

语法结构

for (初始化; 循环条件; 迭代语句) {
    // 循环体
}

经典案例

// 计算 1-100 累加和
int sum = 0;
for (int i = 1; i <= 100; i++) {
    sum += i;
}
System.out.println("总和:" + sum); // 输出5050

// 嵌套循环打印乘法表
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();
}

2. 增强型 for 循环(foreach)

语法结构

for (元素类型 变量名 : 集合/数组) {
    // 使用变量操作元素
}

实战案例

// 遍历数组
String[] fruits = {"Apple", "Banana", "Orange"};
for (String fruit : fruits) {
    System.out.println(fruit);
}

// 遍历集合(需实现Iterable接口)
List<Integer> numbers = Arrays.asList(1, 2, 3);
for (int num : numbers) {
    System.out.println(num * 2);
}

注意事项
• 不可修改集合结构(增删元素会抛出异常)
• 无法获取当前索引位置


三、条件型循环结构

1. while 循环

语法结构

while (循环条件) {
    // 循环体
}

典型案例

// 猜数字游戏
import java.util.Scanner;

int target = (int)(Math.random() * 100);
Scanner scanner = new Scanner(System.in);
int guess = -1;

while (guess != target) {
    System.out.print("请输入猜测数字(0-99):");
    guess = scanner.nextInt();
    if (guess < target) {
        System.out.println("猜小了!");
    } else if (guess > target) {
        System.out.println("猜大了!");
    }
}
System.out.println("恭喜猜中!");
scanner.close();

2. do-while 循环

语法结构

do {
    // 循环体
} while (循环条件);

经典应用场景

// 用户菜单系统
Scanner scanner = new Scanner(System.in);
int choice;

do {
    System.out.println("==== 系统菜单 ====");
    System.out.println("1. 查询余额");
    System.out.println("2. 存款");
    System.out.println("3. 取款");
    System.out.println("0. 退出");
    System.out.print("请选择操作:");
    
    choice = scanner.nextInt();
    
    switch (choice) {
        case 1: 
            System.out.println("当前余额:1000元");
            break;
        case 2:
            System.out.println("存款功能暂未开放");
            break;
        case 3:
            System.out.println("取款功能暂未开放");
            break;
        case 0:
            System.out.println("感谢使用,再见!");
            break;
        default:
            System.out.println("无效选择!");
    }
} while (choice != 0);

scanner.close();

四、循环控制进阶技巧

1. 循环控制语句

语句作用示例
break终止整个循环跳出循环体执行后续代码
continue跳过本次循环剩余代码直接进入下一次循环条件判断

实战案例

// 查找第一个能被3整除的数
int[] numbers = {1, 4, 7, 9, 2, 6};
for (int num : numbers) {
    if (num % 3 == 0) {
        System.out.println("找到第一个符合要求的数:" + num);
        break;
    }
}

// 跳过奇数打印
for (int i = 1; i <= 10; i++) {
    if (i % 2 != 0) {
        continue;
    }
    System.out.println("当前偶数:" + i);
}

2. 标签跳转(Label)

// 双重循环中直接跳出外层循环
outerLoop: 
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
        if (i == 2 && j == 3) {
            System.out.println("触发条件,跳出外层循环");
            break outerLoop;
        }
        System.out.printf("(%d,%d) ", i, j);
    }
    System.out.println();
}

五、特殊循环场景处理

1. 无限循环与控制

// 服务器消息监听模拟
while (true) {
    System.out.println("正在监听消息...");
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        System.out.println("收到终止信号!");
        break;
    }
}

2. 流式数据处理(Java 8+)

// 使用Stream API处理集合
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

// 并行流处理
names.parallelStream()
     .filter(name -> name.length() > 3)
     .map(String::toUpperCase)
     .forEach(System.out::println);

六、性能优化与最佳实践

1. 循环优化策略

场景优化方法示例
集合遍历使用增强型for循环for (Element e : collection)
频繁方法调用缓存方法返回值提前计算集合size
复杂条件判断提取到循环外部预计算判断条件

2. 时间复杂度对比

循环类型平均时间复杂度适用数据规模
单层循环O(n)百万级以下
双重嵌套循环O(n²)万级以下
三重嵌套循环O(n³)百级以下

七、企业级开发规范

1. 代码可读性要求

禁止超过 3 层循环嵌套
• 循环体代码行数控制在 20 行以内
• 复杂循环逻辑添加 中文注释

2. 安全注意事项

// 防范无限循环
int count = 0;
while (someCondition) {
    // 添加安全计数器
    if (count++ > 10000) {
        throw new RuntimeException("循环次数超限");
    }
    // 业务逻辑...
}

通过掌握这些循环结构和优化技巧,开发者可以编写出既高效又易于维护的Java代码。建议在复杂循环逻辑中增加日志输出,便于调试和性能分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值