01:用户交互 Scanner
核心知识点
- Scanner 类作用:实现程序与用户的键盘交互,读取输入数据。
- 基本使用步骤 :
- 导包:
import java.util.Scanner; - 创建对象:
Scanner scanner = new Scanner(System.in); - 读取数据:
- 读取字符串:
String str = scanner.next();/String str = scanner.nextLine(); - 读取整数:
int num = scanner.nextInt(); - 读取浮点数:
double num = scanner.nextDouble();
- 读取字符串:
- 关闭资源:
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(跳出方法)。
- 查看变量:实时监控变量值变化,定位逻辑错误。