Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第 1 周:环境 + 基础语法速通(含循环、方法、数组)

本周目标

你有 C 语言基础,本周的目标不是重新学语法,而是用一周时间把已会的内容迁移到 Java,并打通到能独立写小程序。完成后,应能够:

  • 独立完成 JDK 安装、环境变量配置和开发工具创建项目
  • 编写、编译并运行 Java 程序,看懂最基本的报错信息
  • 使用变量、八种基本类型、类型转换、Scanner 和运算符表达数据与计算
  • 使用 if、switch 编写分支,使用三种循环处理重复逻辑
  • 定义、调用和重载方法,说明 Java 值传递与 C 指针传参的差异
  • 使用一维、二维数组完成遍历、最值、查找和排序
  • 使用断点单步调试,并记录本周发现的 Java 与 C 的差异

学习资料与范围

视频范围学习模块学习结果
P1-P6Java 简介、JDK 安装、环境变量、开发工具和第一个程序能够创建项目并运行 HelloWorld
P7-P19注释、字面量、变量、基本数据类型、类型转换、标识符、Scanner、运算符能够接收输入并完成计算
P20-P29自增自减、关系与逻辑运算、三元运算、if、switch能够编写分支逻辑
P30-P42for、while、do...while、break、continue、嵌套循环、Random能够处理重复计算和二维循环
P43-P50方法定义、参数、返回值、重载和值传递能够把重复逻辑封装为方法
P51-P60数组、二维数组和 Debug 调试能够用数组管理数据并单步排查问题

学习方式:C 语言已覆盖的内容用 1.5-2 倍速快进,只在 Java 特有的地方暂停——Scanner 输入、字符串比较、数组是对象、方法值传递、没有指针、整数除法、char 与整数的转换。把省下的时间用在写代码上,不要逐个分 P 平均用力。

需要掌握的知识点

环境与运行

  • JDK、JRE、JVM 的区别,JAVA_HOME 与 Path 的配置
  • 源码文件、编译产物和运行命令的关系
  • 项目、模块、包、类的层级结构,main 方法的标准写法
  • 编译错误、运行时错误和逻辑错误的区别
  • 类名与文件名不一致、缺少分号、类型不匹配等常见报错

语法基础与输入输出

  • 字面量与八种基本数据类型,重点区分整型和浮点型
  • 自动类型转换、强制类型转换和强制转换造成的数据丢失
  • 字符串拼接规则,以及字符串与数字相加时的执行顺序
  • System.out.println()、print()、printf() 的区别
  • Scanner 的 nextInt()、nextDouble()、next()、nextLine() 及混用问题
  • 算术、自增自减、赋值、关系、逻辑和三元运算符
  • 整数除法、取余运算与 C 语言的一致性和差异

分支与循环

  • if、if...else if 的执行顺序,以及条件顺序对结果的影响
  • switch 的适用场景、case 穿透和 default
  • 三种循环的选择:次数确定用 for,条件驱动用 while
  • 循环三要素、死循环的成因和避免方式
  • break、continue 的作用范围
  • Random 生成指定区间随机数的换算方式

方法与数组

  • 方法定义、调用、参数、返回值和 return 的两层作用
  • 方法重载的判定规则
  • 形参、实参、基本类型值传递和数组引用传递的区别
  • 数组的声明、初始化、默认值、长度和索引越界
  • 遍历、求和、平均值、最值、查找、反转和排序的通用写法
  • 引用类型内存模型:变量保存地址,数组对象在堆区
  • 二维数组的声明、遍历和行列运算

调试

  • 断点设置、单步执行、步入、跳出和恢复运行
  • 观察变量、表达式求值和调用栈
  • 根据运行结果判断问题出在输入、计算还是输出

Java 与 C 的差异

  • 没有指针,引用类型通过引用访问对象
  • boolean 是独立类型,不能用 0 和 1 代替
  • char 是 16 位 Unicode 字符,可与整数互相转换
  • 字符串是 String 类型而不是字符数组,比较内容要使用 equals()
  • 数组是对象,有 length 属性而不是 sizeof 计算
  • 方法参数一律值传递,数组和对象传递的是引用副本
  • 整数默认 int,小数默认 double

必做练习

本周练习从简,只保留能验证差异的题目。如果时间超支,优先保证第 4、5、7 题。

  1. 环境自检:运行一个输出姓名和日期的程序,并记录一次“类名与文件名不一致”的报错原文。
  2. 变量与类型:定义并输出一名学生的姓名、年龄、身高、成绩、性别和是否在读;演示自动转换、强制转换和一个 byte 溢出结果。
  3. 输入与运算:使用 Scanner 录入两个整数,输出和、差、积、商、余数;录入一个三位数并输出各位数字。
  4. 分支:录入成绩输出等级;用 switch 输出星期;用布尔表达式判断闰年。
  5. 循环:输出九九乘法表、1-100 的奇偶数和、100 以内的质数。
  6. 方法:实现两个 sum 重载方法;编写交换两个整数和修改数组元素的方法,对比调用结果并解释值传递。
  7. 数组:实现求和、平均、最值、查找、反转和冒泡排序,并说明反转为什么必须用临时变量。
  8. 二维数组与 Debug:用二维数组保存 3 名学生、每人 3 门课的成绩,输出个人总分和各科平均分;为冒泡排序设置断点,记录一次单步过程。
  9. 错误记录:收集并解释本周遇到的至少 3 个报错,说明报错含义和修改方式。

本周综合任务:控制台版学生成绩统计器

编写一个控制台程序,使用数组保存成绩,并使用独立方法完成统计。

要求:

  • 使用数组保存至少 5 名学生的成绩,成绩可键盘录入或随机生成
  • 使用独立方法实现总分、平均分、最高分、最低分、及格率和成绩等级分布
  • 使用独立方法实现按成绩查找、按成绩从高到低排序输出
  • 使用二维数组保存每名学生的多科成绩,输出个人总分和平均分
  • main 方法只负责菜单和调用,业务计算全部写在方法中
  • 每个方法只做一件事,使用参数接收数据、使用返回值返回结果
  • 处理除零、数组越界和非法输入
  • 使用 Debug 定位并记录一个真实问题的排查过程

本周产出

  • 可运行的环境自检程序
  • 变量、类型转换、输入输出、分支、循环、方法和数组练习代码
  • 控制台版学生成绩统计器
  • 一份 Java 与 C 的差异笔记(语法、内存、字符串、方法传参)
  • 一份本周报错与调试记录

完成检查

  • 能够独立安装 JDK 并配置环境变量
  • 能够创建项目并正确编译、运行 Java 程序
  • 能够区分八种基本数据类型并正确使用 Scanner
  • 能够说明字符串比较为什么不能使用 ==
  • 能够编写 if...else if、switch 和三种循环
  • 能够定义带参数和返回值的方法,并说明值传递与 C 指针的区别
  • 能够完成数组的遍历、最值、查找、反转和排序
  • 能够使用断点、单步和变量观察定位问题
  • 已完成控制台版学生成绩统计器
  • 已记录本周 Java 与 C 的差异点