《Java语言程序设计》课程PPT
幻灯片 1: 封面页
- Java语言程序设计
- 从入门到实践
- 主讲人: [你的名字/讲师姓名]
- 日期: [课程日期]
- 背景: 可以使用Java的标志性咖啡杯Logo或简洁的科技背景。
幻灯片 2: 课程大纲/目录
- 第一章:Java入门与环境搭建
- Java简介、特点、应用领域
- JDK、JRE、JVM的关系
- 环境变量配置
- 第一个Java程序:Hello World
- 第二章:Java基础语法
- 关键字与标识符
- 数据类型(基本类型与引用类型)
- 变量与常量
- 运算符
- 流程控制(条件、循环)
- 第三章:面向对象编程
- 类与对象
- 成员变量与方法
- 构造方法
- 封装、继承、多态
- 抽象类与接口
- 第四章:常用核心类
- 字符串处理
- 集合框架
- I/O流
- 异常处理
- 第五章:高级特性与未来展望
- 泛型
- 注解
- Lambda表达式
- Java新特性简介
第一章:Java入门与环境搭建
幻灯片 3: 什么是Java?
- Java简介
- 定义: 一种高级、面向对象的、跨平台的编程语言。
- 口号: "一次编写,到处运行" (Write Once, Run Anywhere)。
- 特点:
- 简单性: 语法接近C++,但摒弃了指针等复杂特性。
- 面向对象: 纯粹的OOP语言,支持封装、继承、多态。
- 健壮性: 强类型、异常处理、垃圾回收机制。
- 安全性: 去除了指针,提供安全管理器。
- 平台无关性: 核心思想——Java虚拟机。
- 应用领域:
- 企业级后端开发
- Android移动应用开发
- 大数据处理
- 桌面应用
- 嵌入式系统
幻灯片 4: JDK, JRE, JVM的关系
- Java运行核心
- 使用一个清晰的层级图来展示三者的关系。
- JDK (Java Development Kit): Java开发工具包。
- 包含:JRE + 开发工具(编译器
javac、调试器jdb等)。 - 作用: 开发Java程序。
- 包含:JRE + 开发工具(编译器
- JRE (Java Runtime Environment): Java运行时环境。
- 包含:JVM + Java核心类库。
- 作用: 运行Java程序。
- JVM (Java Virtual Machine): Java虚拟机。
- 作用: 负责执行Java字节码文件(
.class),实现跨平台。
- 作用: 负责执行Java字节码文件(
- JDK (Java Development Kit): Java开发工具包。
- 图示:
JDK包含JRE,JRE包含JVM和核心类库。
幻灯片 5: 环境搭建
- 配置Java开发环境
- 步骤1: 下载JDK
- 官网:
https://www.oracle.com/java/technologies/downloads/ - 选择对应操作系统的版本。
- 官网:
- 步骤2: 安装JDK
- 运行安装程序,记住安装路径(
C:\Program Files\Java\jdk-17)。
- 运行安装程序,记住安装路径(
- 步骤3: 配置环境变量
JAVA_HOME: 设置为JDK的安装根目录。Path: 添加%JAVA_HOME%\bin,以便在命令行中直接使用java和javac。
- 步骤4: 验证安装
- 打开命令行,输入
java -version和javac -version。 - 预期结果: 显示对应的版本号。
- 打开命令行,输入
- 步骤1: 下载JDK
幻灯片 6: 第一个Java程序 - Hello World
- 你的第一个Java程序
- 代码示例:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } - 代码讲解:
public class HelloWorld: 定义一个名为HelloWorld的公共类。public static void main(String[] args): 程序的入口方法。System.out.println(...): 在控制台打印输出文本。
- 编译与运行:
- 编译:
javac HelloWorld.java生成HelloWorld.class文件。 - 运行:
java HelloWorld执行程序。
- 编译:
- 代码示例:
第二章:Java基础语法
幻灯片 7: 关键字与标识符
- 命名规则
- 关键字:
- Java中具有特殊含义的保留字,如
public,class,void,int。 - 不能用作变量名、方法名等。
- (可以展示一个关键字列表截图)
- Java中具有特殊含义的保留字,如
- 标识符:
- 给类、方法、变量等命名的名称。
- 规则:
- 可以由字母、数字、下划线
_、美元符组成。 - 不能以数字开头。
- 不能是关键字。
- 严格区分大小写。
- 可以由字母、数字、下划线
- 命名规范:
- 类名:首字母大写,驼峰命名法(
MyClass)。 - 方法名和变量名:首字母小写,驼峰命名法(
myVariable,calculateSum)。
- 类名:首字母大写,驼峰命名法(
- 关键字:
幻灯片 8: 数据类型
- Java的数据类型
- 使用一个表格来展示两大类数据类型。
- 基本数据类型:
| 类型 | 大小 | 默认值 | 范围 |
| :--- | :--- | :--- | :--- |
|
byte| 1字节 | 0 | -128 ~ 127 | |short| 2字节 | 0 | -32768 ~ 32767 | |int| 4字节 | 0 | 约 ±21亿 | |long| 8字节 | 0L | 极大 | |float| 4字节 | 0.0f | 单精度浮点数 | |double| 8字节 | 0.0d | 双精度浮点数 | |char| 2字节 | '\u0000' | 单个字符 | |boolean| 1位 | false |true/false| - 引用数据类型:
- 类、接口、数组、枚举等。
- 特点: 变量中存储的是对象的内存地址。
- 基本数据类型:
| 类型 | 大小 | 默认值 | 范围 |
| :--- | :--- | :--- | :--- |
|
幻灯片 9: 变量、常量与运算符
- 存储与计算
- 变量:
数据类型 变量名 = 初始值;(e.g.,int age = 25;)
- 常量:
- 使用
final关键字修饰,值不能改变。 final double PI = 3.14159;
- 使用
- 运算符:
- 算术运算符: , , , , , ,
- 关系运算符:
>,<,>=,<=, , - 逻辑运算符:
&&(与), (或), (非) - 赋值运算符: , , , etc.
- 三元运算符:
条件 ? 表达式1 : 表达式2
- 变量:
幻灯片 10: 流程控制
- 程序的执行路径
- 条件语句:
if-else结构switch结构- (配一个流程图)
- 循环语句:
for循环 (用于明确循环次数的场景)for (int i = 0; i < 10; i++) { // 循环体 }while循环 (用于循环次数不明的场景)while (condition) { // 循环体 }do-while循环 (至少执行一次)do { // 循环体 } while (condition);
- 跳转语句:
break: 跳出当前循环或switch。continue: 跳过本次循环,继续下一次。
- 条件语句:
第三章:面向对象编程
幻灯片 11: 类与对象
- OOP的基石
- 类:
- 定义: 一类事物的抽象模板,包含属性(成员变量)和行为(方法)。
- 类比: 汽车设计图。
- 对象:
- 定义: 类的具体实例,是真实存在的个体。
- 类比: 根据设计图制造出来的具体一辆汽车。
- 创建对象:
// 1. 声明一个对象变量 Car myCar; // 2. 创建对象实例并赋值 myCar = new Car(); // 简写: Car myCar = new Car();
- 类:
幻灯片 12: 成员变量与方法
-
类的组成部分
-
-
成员变量:
- 定义在类中,方法外。
- 描述对象的属性。
-
方法:
- 定义类的行为和功能。
- 语法:
修饰符 返回值类型 方法名(参数列表) { // 方法体 return 返回值; // 如果返回值类型不是void }
-
示例代码:
public class Car { // 成员变量 String color; int speed; // 方法 public void start() { System.out.println("Car started!"); } }
-
幻灯片 13: 构造方法
- 对象的“出厂设置”
- 定义: 特殊的方法,用于在创建对象时进行初始化。
- 特点:
- 方法名必须与类名相同。
- 没有返回值类型(连
void都没有)。 - 在创建对象时由
new关键字自动调用。
- 如果没有显式定义,编译器会提供一个默认的无参构造方法。
- 示例代码:
public class Car { String color; // 构造方法 public Car(String c) { this.color = c; // this指代当前对象 System.out.println("A " + color + " car has been created."); } } // 使用 Car myCar = new Car("Red");
幻灯片 14: 封装
- 数据隐藏
- 定义: 将对象的属性(数据)和行为(方法)包装在一起,并隐藏对象的内部细节,只对外暴露有限的接口。
- 目的: 保护数据不被随意修改,提高代码的安全性和可维护性。
- 实现方式:
- 成员变量设为
private(私有): 只能在本类中访问。 - 提供
public(公有) 的getter和setter方法: 用于外部访问和修改私有成员变量。
- 成员变量设为
- 示例代码:
public class Student { private String name; // 私有 public String getName() { // Getter return name; } public void setName(String name) { // Setter this.name = name; } }
幻灯片 15: 继承
- 代码复用的核心
- 定义: 一个新类(子类/派生类)可以继承一个已有类(父类/超类)的属性和方法。
- 语法:
class 子类 extends 父类 { // ... } - 特点:
- Java只支持单继承,但支持多层继承。
super关键字:引用父类的对象,可以调用父类的构造方法和成员。
- 示例:
class Animal { void eat() { System.out.println("Eating..."); } } class Dog extends Animal { void bark() { System.out.println("Barking!"); } } // Dog类拥有eat()和bark()两个方法
幻灯片 16: 多态
-
一份调用,多种形态
-
-
定义: 同一个接口,使用不同的实例而执行不同操作。
-
实现条件:
- 继承
- 方法重写
- 父类引用指向子类对象
-
示例代码:
class Animal { void sound() { System.out.println("Animal sound"); } } class Cat extends Animal { @Override void sound() { System.out.println("Meow"); } } class Dog extends Animal { @Override void sound() { System.out.println("Woof"); } } public class Test { public static void main(String[] args) { Animal myAnimal = new Cat(); // 父类引用指向子类对象 myAnimal.sound(); // 输出: Meow myAnimal = new Dog(); myAnimal.sound(); // 输出: Woof } }
-
幻灯片 17: 抽象类与接口
- 定义行为的蓝图
- 抽象类:
- 使用
abstract修饰的类。 - 特点:
- 可以包含抽象方法(没有方法体)和具体方法。
- 不能被实例化(不能
new),只能被继承。 - 旨在作为父类,为子类提供一个通用模板。
- 使用
- 接口:
- 使用
interface关键字定义。 - 特点 (Java 8之前):
- 方法默认是
public abstract的。 - 成员变量默认是
public static final的。 - 不能包含具体方法(实现)。
- 一个类可以实现多个接口(
implements)。
- 方法默认是
- 作用: 定义规范/契约,实现解耦。
- 使用
- 抽象类:
第四章:常用核心类
幻灯片 18: 字符串处理
- 不可变的字符序列
String类:- 不可变性:一旦创建,内容不能改变。
- 常用方法:
length(),charAt(),substring(),indexOf(),equals(),toUpperCase(),toLowerCase()。
StringBuilder/StringBuffer:- 可变性:用于频繁修改字符串的场景,性能更好。
StringBuilder(非线程安全) vsStringBuffer(线程安全)。- 常用方法:
append(),delete(),insert()。
String s = "hello";vsString s = new String("hello");的区别。
幻灯片 19: 集合框架
- 动态数组与键值对
- 展示集合框架的顶层接口图。
Collection接口:List(有序,可重复):ArrayList: 基于数组,查询快,增删慢。LinkedList: 基于链表,增删快,查询慢。
Set(无序,不可重复):HashSet: 基于哈希表,存取速度快。TreeSet: 基于树,元素有序。
Map接口 (键值对,键唯一):HashMap: 基于哈希表,最常用。TreeMap: 基于树,键有序。
- 泛型:
List<String> list = new ArrayList<>();确保集合中元素的类型安全。
幻灯片 20: I/O流
- 输入与输出
- 流的概念: 数据在源(文件、网络、内存)和目的地之间的有序序列。
- 分类:
- 按方向: 输入流 (
InputStream/Reader), 输出流 (OutputStream/Writer)。 - 按单位: 字节流 (处理二进制文件), 字符流 (处理文本文件)。
- 按方向: 输入流 (
- 常用类:
FileInputStream/FileOutputStreamFileReader/FileWriterBufferedReader/BufferedWriter(带缓冲区,提高效率)
- 核心思想: 使用
try-with-resources语句来自动关闭资源。
幻灯片 21: 异常处理
- 应对程序中的错误
- 异常体系:
Throwable->Error(严重错误,不处理) /Exception(可处理的异常) ->RuntimeException(运行时异常) /CheckedException(受检异常)。 - 关键字:
try: 监测可能发生异常的代码块。catch: 捕获并处理特定类型的异常。finally: 无论是否发生异常,都会执行的代码块,通常用于资源释放。throw: 手动抛出一个异常。throws: 声明一个方法可能抛出的异常。
try-catch-finally结构:try { // 可能产生异常的代码 } catch (ExceptionType e) { // 异常处理代码 } finally { // 一定会执行的代码 }
- 异常体系:
第五章:高级特性与未来展望
幻灯片 22: 泛型
- 编译时的类型安全
- 定义: 在编译阶段检查集合中元素的类型,避免运行时
ClassCastException。 - 作用: 提高代码的健壮性和可读性。
- 示例:
- 不使用泛型:
List list = new ArrayList(); list.add("hello"); String s = (String) list.get(0); - 使用泛型:
List<String> list = new ArrayList<>(); list.add("hello"); String s = list.get(0);
- 不使用泛型:
- 定义: 在编译阶段检查集合中元素的类型,避免运行时
幻灯片 23: Lambda表达式
- 函数式编程的精髓
- 定义: 一种匿名函数,可以看作是简洁地传递代码的方式。
- 语法:
(参数列表) -> { 方法体 } - 作用: 简化匿名内部类的写法,使代码更简洁。
- 示例 (与匿名内部类对比):
- 匿名内部类:
new Thread(new Runnable() { @Override public void run() { System.out.println("Hello from thread"); } }).start(); - Lambda表达式:
new Thread(() -> System.out.println("Hello from thread")).start();
- 匿名内部类:
幻灯片 24: Java新特性简介
- Java的持续进化
- (可以快速介绍几个版本的重要特性)
- Java 8 (里程碑): Lambda表达式、Stream API、新的日期时间API。
- Java 11 (LTS):
var关键字、HTTP Client (标准版)。 - Java 17 (LTS): Sealed Classes (密封类)、Records (记录类)。
- 趋势:
- 模块化: Project Jigsaw,更轻量级的部署。
- 性能持续优化: GC改进、JIT编译器优化。
- 更安全: 持续加强安全模型。
幻灯片 25: 总结与Q&A
- 总结与展望
- 回顾:
- 掌握了Java的基础语法和核心OOP思想。
- 熟悉了常用API和异常处理。
- 了解了现代Java的特性。
- 学习资源:
- 官方文档:
https://docs.oracle.com/en/java/ - 书籍: 《Java核心技术 卷I》、《Effective Java》
- 在线平台: LeetCode、牛客网
- 官方文档:
- Q&A
- 回顾:
- 背景: 简洁的背景图,可以放"谢谢"或"Questions?"字样。
希望这份详细的PPT大纲对你有帮助!你可以根据每个要点填充更详细的文字、代码示例和图片,使其内容更加丰富。
