Java流程控制

01:用户交互 Scanner

核心知识点

  • Scanner 类作用:实现程序与用户的键盘交互,读取输入数据。
  • 基本使用步骤
    1. 导包:import java.util.Scanner;
    2. 创建对象:Scanner scanner = new Scanner(System.in);
    3. 读取数据:
      • 读取字符串:String str = scanner.next(); / String str = scanner.nextLine();
      • 读取整数:int num = scanner.nextInt();
      • 读取浮点数:double num = scanner.nextDouble();
    4. 关闭资源:scanner.close();
  • next () 与 nextLine () 区别
    • next():遇到空格 / 制表符 / 换行符就停止读取,不能读取带空格的字符串。
    • nextLine():读取到换行符为止,可读取完整一行内容(包含空格)。

02:Scanner 进阶使用

核心知识点

  • 判断输入类型 :通过 hasNextXxx() 方法判断输入是否为指定类型,避免输入类型不匹配异常。

    复制代码
    if (scanner.hasNextInt()) {
        int num = scanner.nextInt();
    } else {
        System.out.println("输入不是整数");
    }
  • 循环读取输入:结合循环实现多次输入,直到满足终止条件(如输入特定字符)。

  • 读取多行数据 :使用 while(scanner.hasNextLine()) 循环读取多行文本,常用于处理批量输入。


03:顺序结构

核心知识点

  • 定义:程序默认的执行结构,代码按书写顺序从上到下依次执行,无跳转、无分支。

  • 特点:最简单的流程控制结构,是所有复杂流程的基础。

  • 示例

    复制代码
    System.out.println("步骤1");
    System.out.println("步骤2");
    System.out.println("步骤3"); // 按顺序执行1→2→3

04:if 选择结构

核心知识点

  • 单分支 if :满足条件时执行代码块。

    复制代码
    if (条件表达式) {
        // 条件为true时执行
    }
  • 双分支 if-else :条件为 true 执行 if 块,否则执行 else 块。

    复制代码
    if (条件表达式) {
        // true逻辑
    } else {
        // false逻辑
    }
  • 多分支 if-else if-else :处理多个互斥条件,从上到下依次判断,满足则执行对应代码块。

    复制代码
    if (条件1) {
        // 逻辑1
    } else if (条件2) {
        // 逻辑2
    } else {
        // 所有条件都不满足时执行
    }
  • 嵌套 if:在 if/else 内部再嵌套 if 结构,适合处理复杂条件判断。


05:Switch 选择结构

核心知识点

  • 语法结构 :根据变量值匹配 case 标签,执行对应代码块。

    复制代码
    switch (变量/表达式) {
        case 常量1:
            // 逻辑1
            break; // 终止当前case,避免穿透
        case 常量2:
            // 逻辑2
            break;
        default:
            // 所有case都不匹配时执行
            break;
    }
  • 支持的变量类型:byte/short/int/char/String(Java 7+)/ 枚举。

  • case 穿透:若 case 后无 break,会继续执行后续 case 代码,直到遇到 break 或 switch 结束。

  • default 位置:可放在任意位置,通常放最后,所有 case 不匹配时执行。


06:While 循环详解

核心知识点

  • 语法 :先判断条件,再执行循环体,条件为 false 时直接跳过循环。

    复制代码
    while (循环条件) {
        // 循环体
        // 迭代语句(更新循环变量,避免死循环)
    }
  • 执行流程:判断条件→true 执行循环体→再次判断条件→...→false 结束循环。

  • 特点:循环体可能一次都不执行(条件初始为 false 时)。

  • 死循环 :若循环条件永远为 true(如while(true)),会无限执行循环体。


07:DoWhile 循环

核心知识点

  • 语法 :先执行一次循环体,再判断条件,条件为 true 则继续循环。

    复制代码
    do {
        // 循环体
        // 迭代语句
    } while (循环条件);
  • 执行流程:执行循环体→判断条件→true 则重复执行→false 结束循环。

  • 特点 :循环体至少执行一次,适合需要先执行再判断的场景。

  • 与 while 的区别:while 先判断后执行,do-while 先执行后判断。


08:For 循环详解

核心知识点

  • 语法 :将初始化、条件判断、迭代更新合并到一行,结构更紧凑。

    复制代码
    for (初始化语句; 循环条件; 迭代语句) {
        // 循环体
    }
  • 执行流程:初始化→判断条件→true 执行循环体→执行迭代语句→再次判断条件→...→false 结束。

  • 特点:适合循环次数已知的场景,代码可读性更高。

  • 省略写法 :可省略初始化 / 条件 / 迭代语句(但分号不能省),极端情况可写为for(;;)(死循环)。


09:打印九九乘法表

核心知识点

  • 实现思路:嵌套 for 循环,外层控制行数(1-9),内层控制列数(1 - 当前行数)。

  • 示例代码

    复制代码
    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(); // 换行
    }
  • 效果:输出经典九九乘法表,体现嵌套循环的应用。


10:增强 for 循环

核心知识点

  • 语法 :Java 5+ 新增,专门用于遍历数组 / 集合,简化遍历代码。

    复制代码
    for (元素类型 变量名 : 数组/集合) {
        // 使用变量访问当前元素
    }
  • 示例 :遍历数组

    复制代码
    int[] arr = {1,2,3};
    for (int num : arr) {
        System.out.println(num);
    }
  • 注意 :增强 for 循环无法修改数组 / 集合元素(仅读取),也无法获取当前索引。


11:break、continue、goto

核心知识点

  • break
    • 作用:跳出当前循环 /switch 语句,终止整个循环或 switch。
    • 示例:for(...) { if(...) break; } 满足条件时直接结束 for 循环。
  • continue
    • 作用:跳过当前循环的剩余语句,直接进入下一次循环迭代。
    • 示例:for(...) { if(...) continue; } 满足条件时跳过本次循环剩余代码。
  • goto(保留字,未启用)
    • Java 中 goto 是保留关键字,但未实现功能,避免破坏程序结构。
    • 替代方案:使用带标签的 break/continue 实现类似跳转(不推荐,可读性差)。

12:打印三角形及 Debug

核心知识点

  • 打印直角三角形 :嵌套 for 循环,外层控制行数,内层控制每行打印的 * 数量。

    复制代码
    for (int i = 1; i <= 5; i++) {
        for (int j = 1; j <= i; j++) {
            System.out.print("*");
        }
        System.out.println();
    }
  • 打印等腰三角形:先打印空格,再打印 *,实现居中效果。

  • Debug 调试技巧

    • 打断点:在代码行号处点击,标记调试位置。
    • 单步执行:Step Over(跳过方法)、Step Into(进入方法)、Step Out(跳出方法)。
    • 查看变量:实时监控变量值变化,定位逻辑错误。
相关推荐
云烟成雨TD1 小时前
Spring AI Alibaba 1.x 系列【69】Token 用量统计
java·人工智能·spring
JAVA9651 小时前
JAVA面试-并发篇 03-使用synchronized doublecheck实现单例有什么坑
java·单例模式·面试
在繁华处1 小时前
Java从零到熟练(四):面向对象基础
java·开发语言
Unbelievabletobe1 小时前
解决了股票api接口盘后数据更新慢的问题
大数据·开发语言·python
不会C语言的男孩2 小时前
C++ Primer 第2章:变量和基本类型
开发语言·c++
小江的记录本3 小时前
【JVM虚拟机】堆内存分代模型:年轻代(Eden+Survivor)、老年代、元空间Metaspace(附《思维导图》+《面试高频考点清单》)
java·前端·jvm·后端·python·spring·面试
在繁华处3 小时前
Java从零到熟练(三):流程控制
java·开发语言·python
sulikey3 小时前
个人Linux操作系统学习笔记6 - 操作系统与进程初识
linux·笔记·学习·操作系统·进程
唐青枫3 小时前
Java Optional 实战指南:优雅处理空值与链式转换
java
一起学开源3 小时前
一文读懂 ReAct 范式:让 AI Agent 真正学会“思考+行动“
java·javascript·react.js·ecmascript·react·alibaba·智能体开发