java分支与循环

Java 分支与循环 是 Java 基础语法中最核心的部分,几乎所有程序逻辑都依赖它们。
分支(选择结构)决定“走哪条路”,循环(迭代结构)决定“重复做多少次”。

下面从语法 → 特点 → 使用场景 → 代码示例 → 易错点 完整梳理,适合零基础到面试复习。

1. 分支结构(选择结构)

Java 提供两种主要分支方式:if…else(条件判断)和 switch(多分支等值匹配)。

1.1 if 语句(最常用)

形式特点适用场景执行次数
if单分支只需判断是否做某事0 或 1 次
if…else二选一两种互斥情况必执行 1 次
if…else if…else多条件判断(顺序匹配)多档次判断(如成绩分级)0~n 次

代码示例

int score = 85;

if (score >= 90) {
    System.out.println("优秀");
} else if (score >= 80) {
    System.out.println("良好");
} else if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}

三元运算符(if…else 的简写形式)

// 格式:条件 ? 表达式1 : 表达式2
String result = score >= 60 ? "及格" : "不及格";
int max = a > b ? a : b;

1.2 switch 语句(JDK 14+ 增强)

传统 switch(JDK 7 前只支持 int、byte、short、char)

int day = 3;
String dayName;

switch (day) {
    case 1:
        dayName = "星期一";
        break;
    case 2:
        dayName = "星期二";
        break;
    // ... 
    default:
        dayName = "非法日期";
}

switch 穿透(不写 break 会继续执行下一个 case)

JDK 12+ switch 表达式(推荐,带返回值,更安全)

String dayName = switch (day) {
    case 1  -> "星期一";
    case 2  -> "星期二";
    case 3, 4, 5 -> "工作日";   // 多值合并(JDK 14+)
    case 6, 7   -> "周末";
    default     -> "非法";
};

支持类型(2025 现状):

  • byte, short, char, int
  • 包装类(Byte, Short, Character, Integer)
  • String(JDK7+)
  • enum(枚举)
  • 不能用 long、float、double、boolean

2. 循环结构(重复执行)

Java 有四种循环:for(最常用)、whiledo-whilefor-each(增强 for)

循环类型特点适用场景先判断还是先执行
for计数循环,结构清晰已知循环次数先判断
while先判断后执行不确定循环次数先判断
do-while先执行后判断,至少执行一次至少要执行一次的情况(如菜单)后判断
for-each专门遍历数组/集合只读遍历集合/数组

2.1 for 循环(最常用)

// 经典格式
for (int i = 0; i < 10; i++) {
    System.out.println(i);  // 0~9
}

// 求 1~100 的和
int sum = 0;
for (int i = 1; i <= 100; i++) {
    sum += i;
}
System.out.println("1+2+...+100 = " + sum);  // 5050

2.2 while 循环

int i = 1;
int sum = 0;

while (i <= 100) {
    sum += i;
    i++;
}
System.out.println(sum);  // 5050

死循环写法(小心使用)

while (true) {
    // 通常配合 break 使用
}

2.3 do-while 循环(至少执行一次)

int num;
do {
    System.out.print("请输入1~10之间的数字:");
    num = scanner.nextInt();
} while (num < 1 || num > 10);

System.out.println("你输入了合法数字:" + num);

2.4 增强 for 循环(for-each)

int[] arr = {10, 20, 30, 40};

// 只读遍历
for (int num : arr) {
    System.out.println(num);
}

// 遍历集合
List<String> list = Arrays.asList("A", "B", "C");
for (String s : list) {
    System.out.println(s);
}

注意:for-each 不能修改元素本身(基本类型),引用类型可以改对象内容。

3. 循环控制语句(break、continue、return)

语句作用适用范围常用场景
break立即跳出当前循环for/while/do-while/switch找到目标后结束循环
continue跳过本次循环,进入下一次for/while/do-while过滤不符合条件的数据
return结束整个方法(包括循环)方法内提前返回结果

示例

for (int i = 1; i <= 10; i++) {
    if (i == 5) {
        continue;   // 跳过 5
    }
    if (i == 8) {
        break;      // 遇到 8 直接结束循环
    }
    System.out.print(i + " ");  // 输出 1 2 3 4 6 7
}

4. 经典练习题(建议手写)

  1. 输出 1~100 之间所有奇数之和
  2. 打印 9×9 乘法表(双重 for 循环)
  3. 猜数字游戏(do-while + 随机数)
  4. 统计字符串中每个字符出现次数(for-each + switch 或 Map)
  5. 求 1~100 内所有质数(for + 内层判断)

5. 易错点 & 面试高频总结

  • if 后面不要加分号if (a > b); { ... } 会导致 if 体为空
  • switch 忘记 break → 导致 case 穿透
  • while(true) 死循环 → 忘记 break 或条件变化
  • for 循环中修改循环变量 → 容易死循环或跳跃
  • 三元运算符嵌套 → 可读性差,建议用 if
  • for-each 不能用 break 修改集合(ConcurrentModificationException)

一句话记忆

  • 分支:if 看条件,switch 看值
  • 循环:for 数得清,while 看条件,do-while 至少一次
  • 控制:break 跳出,continue 跳过,return 结束方法

有哪一部分想看更详细的代码示例(比如九九乘法表、质数判断、猜数字完整版),或者想练习特定题目,我可以继续给你出题和解析!加油!

文章已创建 4401

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部