《Java程序设计教程与实验》
第一部分:核心教程 - 理论基础
本部分将Java的核心知识体系分解为循序渐进的模块,每个模块都配有核心概念、关键语法和示例代码。

Java入门与环境搭建
- 核心概念:
- Java是什么: 一次编写,到处运行的跨平台语言。
- JDK, JRE, JVM的关系:
JDK(Java Development Kit) 用于开发,JRE(Java Runtime Environment) 用于运行,JVM(Java Virtual Machine) 是Java虚拟机,实现跨平台的核心。 - 环境变量配置: 设置
JAVA_HOME和PATH,以便在命令行中使用javac和java命令。
- 关键语法:
- 第一个程序
HelloWorld.java:public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } - 程序结构:
public class,main方法, 代码块 。 - 注释: 单行注释 , 多行注释 , 文档注释 。
- 第一个程序
Java基础语法
-
核心概念:
- 变量与数据类型:
int,double,char,boolean,String。 - 常量:
final关键字。 - 运算符: 算术、关系、逻辑、赋值、三元运算符。
- 类型转换: 自动类型提升和强制类型转换。
- 变量与数据类型:
-
关键语法:
int age = 25; double price = 99.99; char grade = 'A'; boolean isStudent = true; final double PI = 3.14159; // 类型转换 int intVal = (int) 3.14; // 强制转换,结果为 3
流程控制
-
核心概念:
- 顺序结构: 代码从上到下依次执行。
- 选择结构: 根据条件执行不同的代码块。
- 循环结构: 重复执行某段代码。
-
关键语法:
(图片来源网络,侵删)- 选择:
if-else,if-else if-else,switch-case。 - 循环:
for,while,do-while。 - 跳转:
break(跳出循环),continue(跳过本次循环)。// for循环示例 for (int i = 1; i <= 5; i++) { System.out.println("当前是第 " + i + " 次循环"); }
// if-else示例 if (score >= 90) { System.out.println("优秀"); } else if (score >= 60) { System.out.println("及格"); } else { System.out.println("不及格"); }
- 选择:
数组
-
核心概念:
- 数组: 存储固定大小、相同类型元素的容器。
- 索引: 从0开始的整数,用于访问数组元素。
- 数组长度:
array.length。
-
关键语法:
// 声明并初始化 int[] numbers = new int[5]; // 创建一个长度为5的int数组 String[] names = {"Alice", "Bob", "Charlie"}; // 静态初始化 // 访问和修改 numbers[0] = 10; System.out.println(names[1]); // 输出 Bob // 遍历数组 for (int i = 0; i < names.length; i++) { System.out.println(names[i]); }
面向对象编程
-
核心概念:
- 类与对象: 类是模板,对象是实例。
类 -> 对象(汽车设计图 -> 一辆具体的汽车)。 - 三大特性:
- 封装: 将数据(属性)和操作数据的方法(行为)捆绑在一起,并隐藏内部实现细节(通过
private和public)。 - 继承: 子类继承父类的属性和方法,实现代码复用(
extends)。 - 多态: 同一个接口,使用不同的实例而执行不同操作(父类引用指向子类对象)。
- 封装: 将数据(属性)和操作数据的方法(行为)捆绑在一起,并隐藏内部实现细节(通过
- 类与对象: 类是模板,对象是实例。
-
关键语法:
-
类定义:
public class Student { // 属性 (成员变量) private String name; private int age; // 构造方法 public Student(String name, int age) { this.name = name; this.age = age; } // 方法 (行为) public void study() { System.out.println(name + " is studying."); } // Getter 和 Setter (封装的体现) public String getName() { return name; } } -
继承:
public class GraduateStudent extends Student { public GraduateStudent(String name, int age) { super(name, age); // 调用父类构造方法 } @Override public void study() { System.out.println(getName() + " is doing research."); } }
-
常用API
-
核心概念:
- API (Application Programming Interface): Java类库提供的预定义功能。
- 字符串处理:
String,StringBuilder,StringBuffer。 - 集合框架:
List,Set,Map等接口及其实现类 (ArrayList,HashSet,HashMap)。 - 工具类:
Math,Arrays,Date/LocalDate。
-
关键语法:
// String String s1 = "Hello"; String s2 = s1.concat(" Java"); // s2 = "Hello Java" // ArrayList ArrayList<String> list = new ArrayList<>(); list.add("Apple"); list.add("Banana"); System.out.println(list.get(0)); // 输出 Apple // HashMap HashMap<String, Integer> scores = new HashMap<>(); scores.put("Alice", 95); System.out.println(scores.get("Alice")); // 输出 95
异常处理
- 核心概念:
- 异常: 程序运行时出现的错误。
- 异常处理机制: 使用
try-catch-finally结构捕获和处理异常,使程序更健壮。
- 关键语法:
try { int result = 10 / 0; // 会抛出 ArithmeticException } catch (ArithmeticException e) { System.out.println("发生算术异常: " + e.getMessage()); } finally { System.out.println("无论是否发生异常,这里都会执行。"); }
I/O流与文件操作
-
核心概念:
- 流: 数据在源和目的地之间的有序序列。
- 字节流 vs 字符流:
InputStream/OutputStream(处理字节),Reader/Writer(处理字符)。 - 文件读写: 使用
FileInputStream,FileOutputStream,FileReader,FileWriter等类。
-
关键语法:
// 写入文件 try (FileWriter writer = new FileWriter("test.txt")) { writer.write("Hello, File!"); } catch (IOException e) { e.printStackTrace(); } // 读取文件 try (FileReader reader = new FileReader("test.txt")) { char[] buffer = new char[1024]; int charsRead = reader.read(buffer); System.out.println(new String(buffer, 0, charsRead)); } catch (IOException e) { e.printStackTrace(); }
多线程
-
核心概念:
- 进程与线程: 进程是资源分配的基本单位,线程是CPU调度的基本单位,一个进程可以包含多个线程。
- 创建线程的方式:
- 继承
Thread类。 - 实现
Runnable接口(更常用)。
- 继承
- 线程同步: 当多个线程访问共享资源时,需要使用
synchronized关键字或锁来避免数据冲突。
-
关键语法:
// 实现 Runnable 接口 class MyTask implements Runnable { @Override public void run() { for (int i = 0; i < 5; i++) { System.out.println(Thread.currentThread().getName() + " is running..."); try { Thread.sleep(1000); // 休眠1秒 } catch (InterruptedException e) { e.printStackTrace(); } } } } public class Main { public static void main(String[] args) { Thread thread1 = new Thread(new MyTask(), "Thread-A"); Thread thread2 = new Thread(new MyTask(), "Thread-B"); thread1.start(); thread2.start(); } }
第二部分:实验项目 - 动手实践
理论学习必须通过实践来巩固,以下是按难度递增设计的实验项目。
控制台计算器
- 目标: 熟练掌握基本语法、流程控制、输入输出。
- 要求:
- 程序启动后,提示用户输入两个数字和一个运算符 (+, -, *, /)。
- 根据用户输入,计算并输出结果。
- 处理简单的异常情况,如除数为0、输入非法字符等。
- 知识点:
Scanner,if-else,switch-case,try-catch。
学生信息管理系统
- 目标: 掌握面向对象编程、数组/集合的使用。
- 要求:
- 定义一个
Student类,包含学号、姓名、年龄、成绩等属性。 - 使用
ArrayList<Student>来存储学生对象。 - 实现以下功能:
- 添加学生
- 根据学号删除学生
- 根据学号查找学生并显示信息
- 显示所有学生信息
- 按成绩排序学生
- 定义一个
- 知识点: 类、对象、构造方法、
ArrayList、for循环、if判断。
图书管理系统
- 目标: 深入理解OOP(继承、多态),并开始接触文件I/O。
- 要求:
- 设计一个
Book基类,包含书名、作者、ISBN号等。 - 创建
EBook(电子书) 和PrintedBook(纸质书) 子类,分别添加特有属性(如文件大小、页数)。 - 使用
ArrayList<Book>管理所有图书。 - 实现增、删、查、改功能。
- 扩展功能: 将所有图书信息保存到文件中,并在程序启动时从文件加载。
- 设计一个
- 知识点: 继承、多态、
ArrayList、文件读写 (FileWriter,FileReader或更高级的ObjectOutputStream)。
多线程下载模拟器
- 目标: 掌握多线程的基本概念和使用。
- 要求:
- 模拟一个文件下载过程。
- 用户指定文件大小(如100MB)和线程数(如4个)。
- 创建多个线程,每个线程负责下载文件的一部分。
- 每个线程打印自己的下载进度("线程1: 已下载 25MB")。
- 所有线程下载完成后,主线程打印 "下载完成!"。
- 知识点:
Thread/Runnable,synchronized(如果需要控制共享资源),start(),sleep()。
简单的聊天室
- 目标: 综合运用多线程、网络编程、集合等高级知识。
- 要求:
- 服务器端:
- 监听特定端口,等待客户端连接。
- 当一个客户端连接时,为它创建一个新的
ServerThread来处理通信。 - 维护一个所有客户端线程的集合。
- 当一个客户端发送消息时,服务器将该消息广播给所有其他客户端。
- 客户端:
- 连接到服务器。
- 启动一个线程用于接收服务器转发的消息。
- 主线程用于从控制台读取用户输入并发送给服务器。
- 服务器端:
- 知识点:
Socket,ServerSocket, 多线程,HashMap/ArrayList(管理客户端连接)。
第三部分:学习资源推荐
- 经典书籍:
- 入门: 《Java核心技术 卷I:基础知识》(Cay S. Horstmann) - 内容详实,讲解透彻。
- 进阶: 《Effective Java》(Joshua Bloch) - Java编程的最佳实践,必读经典。
- 工具: 《Head First设计模式》 - 以轻松有趣的方式讲解设计模式。
- 在线教程:
- 菜鸟教程: 提供快速入门的语法和示例。
- W3Schools: 同样是很好的快速参考网站。
- B站/慕课网: 大量免费和付费的视频课程,适合喜欢看视频学习的同学。
- 官方文档:
- Oracle Java Documentation: 最权威、最准确的资料,学会查阅官方文档是成为优秀程序员的关键。
- 开发工具:
- IDE (集成开发环境): IntelliJ IDEA (社区版免费,强烈推荐) 或 Eclipse。
- 构建工具: Maven 或 Gradle,用于项目管理和依赖管理。
学习建议
- 多动手,少看视频: 看懂不等于会写,一定要亲手敲代码,哪怕是最简单的例子。
- 调试是关键: 学会使用IDE的调试功能(设置断点、单步执行、查看变量),这是解决bug最强大的武器。
- 理解“为什么”: 不要只记住语法,要理解其背后的设计思想和原理,为什么要有接口?为什么多线程需要同步?
- 阅读优秀代码: 在GitHub上找一些优秀的开源Java项目,阅读它们的源码,学习别人的设计思路和编码风格。
- 循序渐进: 不要急于求成,把基础打牢,再挑战复杂的项目,每一个实验项目都值得花时间去完成和思考。
希望这份详细的《Java程序设计教程与实验》指南能对您的学习之路有所帮助!祝您学习愉快!
