具体描述
《C#程序设计与开发》以Microsoft Visual Studio 2005为集成开发环境,通过多个学习任务,引导读者完成C#程序设计的基础学习。《C#程序设计与开发》主要内容包括C#语言概述、常用标准控件的使用、C#程序设计基础、面向对象程序设计、高级控件的使用,以及两个阶段项目和课程设计。
《C#程序设计与开发》采用任务驱动模式编写,每一章都由几个学习任务组成,每个学习任务都将相关的理论知识融入其中。在每一章后面都有配套的实训指导,方便读者巩固已学知识。《C#程序设计与开发》还设计了两个大的阶段项目,给出了基本的项目代码,预留出许多需要改进的地方,具体的项目完善工作读者可以通过相关实训来完成。
《C#程序设计与开发》适合大专(高职)学生使用,也可以作为其他C#程序设计初学者的参考书。
《Java语言程序设计与开发实战》 第一章:Java 语言入门 本章将带领您踏入 Java 编程的世界。我们将从 Java 的基本概念、发展历程以及其核心优势讲起,让您对这门强大的编程语言有一个初步的认识。 1.1 Java 简介 1.1.1 什么是 Java? Java 是一种面向对象的、跨平台的、高性能的、安全的编程语言。它由 Sun Microsystems(现为 Oracle)于 1995 年推出,旨在实现“一次编写,到处运行”的跨平台特性。 1.1.2 Java 的发展历程 从最初的 Oak 项目,到 Java 1.0、1.1、1.2(Java 平台,企业版 - J2EE,Java 平台,标准版 - J2SE,Java 平台,微型版 - J2ME),再到 JDK 5 的重大更新(泛型、枚举、注解等),以及后续的 Java SE 6、7、8,直到现在最新的 LTS 版本,Java 始终保持着旺盛的生命力,不断吸纳新的技术和理念。 1.1.3 Java 的核心优势 跨平台性: Java 虚拟机(JVM)的存在使得 Java 程序可以在任何安装了对应 JVM 的操作系统上运行,无需重新编译。 面向对象: Java 是一种纯粹的面向对象语言,封装、继承、多态等特性大大提高了代码的可重用性和可维护性。 简单性: 相较于 C++ 等语言,Java 简化了内存管理(自动垃圾回收)和指针操作,降低了编程难度。 安全性: Java 提供了强大的安全机制,如字节码校验器、安全管理器等,有效地防止了恶意代码的执行。 健壮性: Java 强调早期错误检测,其异常处理机制能够有效处理运行时错误,提高程序的稳定性。 多线程: Java 内置了对多线程的支持,可以方便地开发并发应用程序。 高性能: 虽然是解释型语言,但通过 JIT(Just-In-Time)编译器等技术,Java 的执行效率得到了显著提升。 分布式: Java 提供了丰富的 API 和工具,便于开发分布式系统。 1.2 Java 开发环境搭建 1.2.1 JDK 的安装与配置 介绍 Java Development Kit (JDK) 的作用,它是开发 Java 程序必不可少的工具集,包含编译器、调试器、JRE 等。详细讲解 Windows、macOS 和 Linux 系统下 JDK 的下载、安装步骤,以及如何设置 `JAVA_HOME` 环境变量和配置 `PATH` 环境变量,确保命令行能够识别 `java` 和 `javac` 命令。 1.2.2 第一个 Java 程序——HelloWorld 指导读者编写、编译和运行第一个简单的 Java 程序。从 `public class HelloWorld` 开始,讲解 `public`、`class`、`static`、`void`、`main`、`String[] args`、`System.out.println()` 等关键字和方法的含义。演示如何使用记事本(或其他文本编辑器)编写 `.java` 文件,然后使用 `javac` 命令编译成 `.class` 文件,最后使用 `java` 命令运行程序,观察输出结果。 1.3 Java 程序基本结构 1.3.1 标识符和关键字 讲解 Java 中变量、类、方法等命名的规则(标识符),以及 Java 语言保留的具有特殊含义的关键字(如 `if`、`else`、`for`、`while`、`int`、`double` 等)。 1.3.2 数据类型 基本数据类型: 详细介绍 Java 的八种基本数据类型: 整型: `byte`(8位)、`short`(16位)、`int`(32位)、`long`(64位)。讲解它们的取值范围和在内存中的存储方式。 浮点型: `float`(32位单精度)、`double`(64位双精度)。解释它们的精度问题和使用场景。 字符型: `char`(16位 Unicode 字符)。讲解字符的表示方式,如单引号内的字符,以及 Unicode 编码。 布尔型: `boolean`(`true` 或 `false`)。讲解其在条件判断中的作用。 引用数据类型: 简要介绍类、接口、数组等引用数据类型的概念,并指出它们与基本数据类型的区别(存储的是对象的地址)。 1.3.3 变量与常量 变量的声明与初始化: 讲解如何声明变量,并为其赋初值。 变量的作用域: 介绍局部变量、成员变量(实例变量和类变量)及其作用域。 常量的定义: 使用 `final` 关键字定义常量,并讲解其不可变性。 1.4 运算符 1.4.1 算术运算符: `+`, `-`, ``, `/`, `%`。讲解它们的用法,特别是整数除法和取模运算。 1.4.2 关系运算符: `>`, `<`, `>=`, `<=`, `==`, `!=`。讲解它们用于比较两个值,结果为布尔类型。 1.4.3 逻辑运算符: `&&`(逻辑与)、`||`(逻辑或)、`!`(逻辑非)。讲解它们用于连接布尔表达式,以及短路特性。 1.4.4 位运算符: `&`, `|`, `^`, `~`, `<<`, `>>`, `>>>`。简要介绍其作用于二进制位。 1.4.5 赋值运算符: `=`, `+=`, `-=`, `=`, `/=`, `%=`。讲解复合赋值运算符。 1.4.6 其他运算符: `?:`(三目运算符)、`.`(点运算符)、`instanceof`。 1.4.7 运算符的优先级与结合性: 讲解不同运算符的优先级顺序,以及相同优先级运算符的结合性,以确定表达式的计算顺序。 1.5 控制流程语句 1.5.1 条件语句: `if` 语句:单分支、双分支、多分支。 `switch` 语句:讲解 `case`、`break`、`default` 的作用,以及 `switch` 语句对数据类型的限制。 1.5.2 循环语句: `for` 循环:经典 `for` 循环、增强型 `for` 循环(for-each)。 `while` 循环:先判断后执行。 `do-while` 循环:先执行后判断。 循环的控制: `break`(跳出整个循环)、`continue`(跳过当前循环迭代)。 1.5.3 跳转语句: `return`:用于从方法中返回值或退出方法。 `goto`:Java 中保留但未使用。 第二章:面向对象编程基础 面向对象编程(OOP)是 Java 的核心思想,本章将深入剖析 OOP 的基本概念和 Java 中的实现方式。 2.1 面向对象编程思想 2.1.1 什么是面向对象? 解释面向对象的思想,即以“对象”为中心,将现实世界的事物抽象为对象,对象之间通过消息(方法调用)进行交互。强调其在软件开发中的优势,如模块化、可重用性、易于维护和扩展。 2.1.2 面向对象的三个基本特征 封装(Encapsulation): 将数据(属性)和操作数据的方法(行为)捆绑在一起,形成一个独立的单元(对象)。讲解访问修饰符(`public`, `private`, `protected`, 默认)在实现封装中的作用,以及 getter 和 setter 方法的使用。 继承(Inheritance): 允许一个类(子类)继承另一个类(父类)的属性和方法,实现代码的复用。讲解 `extends` 关键字,单继承的特点,以及方法重写的概念。 多态(Polymorphism): 同一个接口(方法名),不同的实现。理解运行时多态(通过父类引用指向子类对象)和编译时多态(方法重载)。强调多态的优点,如提高代码的灵活性和可扩展性。 2.2 类与对象 2.2.1 类的定义 讲解如何使用 `class` 关键字定义一个类,包含成员变量(属性)和成员方法(行为)。 属性(成员变量): 介绍实例变量的声明和初始化。 方法(成员方法): 介绍方法的声明、参数列表、返回值类型和方法体。 2.2.2 对象的创建与使用 使用 `new` 关键字创建类的实例(对象)。 通过对象名访问对象的属性和调用对象的方法,使用点运算符(`.`)。 2.2.3 构造方法 构造方法的概念: 特殊的方法,用于创建对象时初始化对象的属性。 构造方法的特点: 方法名与类名相同,没有返回值类型(甚至没有 `void`)。 无参构造方法: 如果类没有显式定义构造方法,Java 会自动提供一个默认的无参构造方法。 有参构造方法: 允许在创建对象时传入参数来初始化属性。 方法重载(Overloading): 同一个类中,方法名相同但参数列表不同。 this 关键字: 用于区分当前对象的属性和参数,以及调用当前类的其他构造方法。 2.3 继承 2.3.1 super 关键字 用于访问父类的属性、方法和构造方法。 2.3.2 方法重写(Override) 子类重新实现父类的方法,要求方法签名(方法名、参数列表)与父类一致,但可以改变方法体。 重写的规则: 访问修饰符不能比父类更严格,异常不能比父类更宽泛。 2.3.3 final 关键字 修饰类: 使类不能被继承。 修饰方法: 使方法不能被重写。 修饰变量: 使变量成为常量,只能赋值一次。 2.3.4 抽象类与抽象方法 抽象类(`abstract class`): 不能被实例化的类,可以包含抽象方法和非抽象方法。 抽象方法(`abstract`): 没有方法体的方法,必须在子类中实现。 使用场景: 定义通用接口,强制子类实现特定行为。 2.4 接口 2.4.1 接口的定义 使用 `interface` 关键字定义,其中所有方法默认是 `public abstract` 的(Java 8 之后可以有默认方法和静态方法)。 接口不能实例化,需要类来实现。 2.4.2 接口的实现 使用 `implements` 关键字,一个类可以实现多个接口。 实现接口的类必须实现接口中所有的抽象方法。 2.4.3 接口的继承 接口可以继承其他接口,使用 `extends` 关键字。 2.4.4 接口与抽象类的区别 接口只能包含抽象方法(以及默认方法和静态方法),而抽象类可以包含任意成员。 一个类只能继承一个抽象类,但可以实现多个接口。 2.5 访问控制修饰符 2.5.1 `public`: 公共的,在任何地方都可以访问。 2.5.2 `private`: 私有的,只能在类内部访问。 2.5.3 `protected`: 受保护的,在同一个包内以及不同包的子类中可以访问。 2.5.4 默认(包私有): 在同一个包内可以访问。 2.5.5 修饰符的使用范围: 类、接口、变量、方法、构造方法。 第三章:Java 核心类库与常用 API Java 提供了丰富的核心类库,极大地简化了开发。本章将介绍 Java 最常用的一些类和 API,让您能够高效地处理各种常见的编程任务。 3.1 `Object` 类 3.1.1 `Object` 类的作用 Java 中所有类的根类,任何类都直接或间接继承自 `Object` 类。 3.1.2 常用方法 `toString()`:返回对象的字符串表示。 `equals()`:比较两个对象是否相等。 `hashCode()`:返回对象的哈希码。 `getClass()`:返回对象的运行时类。 `clone()`:创建对象的副本(需要实现 `Cloneable` 接口)。 `finalize()`:在对象被垃圾回收前调用(不推荐使用)。 3.2 字符串(String)类 3.2.1 String 对象的创建与特点 String 对象是不可变的,一旦创建,其内容就不能被修改。 String 对象的两种创建方式:字面量创建和 `new String()` 创建,并解释它们在内存中的区别(字符串常量池)。 3.2.2 常用方法 `length()`:获取字符串长度。 `charAt(int index)`:获取指定索引处的字符。 `substring(int beginIndex, int endIndex)`:截取子字符串。 `indexOf(String str)`:查找子字符串第一次出现的位置。 `lastIndexOf(String str)`:查找子字符串最后一次出现的位置。 `equals(Object anObject)`:比较字符串内容是否相等。 `equalsIgnoreCase(String anotherString)`:忽略大小写比较字符串。 `startsWith(String prefix)`:判断字符串是否以指定前缀开头。 `endsWith(String suffix)`:判断字符串是否以指定后缀结尾。 `replace(char oldChar, char newChar)`:替换字符。 `replaceAll(String regex, String replacement)`:使用正则表达式替换字符串。 `split(String regex)`:按照正则表达式分割字符串。 `toUpperCase()`:转换为大写。 `toLowerCase()`:转换为小写。 `trim()`:去除字符串首尾空格。 `toCharArray()`:将字符串转换为字符数组。 `getBytes()`:将字符串转换为字节数组。 3.2.3 StringBuffer 和 StringBuilder 类 与 String 的不可变性不同,StringBuffer 和 StringBuilder 是可变的。 StringBuffer: 线程安全,性能较低,适合多线程环境。 StringBuilder: 线程不安全,性能较高,适合单线程环境。 介绍它们的常用方法,如 `append()`、`insert()`、`delete()`、`reverse()` 等。 3.3 包装类(Wrapper Classes) 3.3.1 包装类的作用 将基本数据类型封装成对象,以便在需要对象的地方使用(如集合框架)。 3.3.2 常用包装类 `Integer`, `Double`, `Boolean`, `Character`, `Byte`, `Short`, `Long`, `Float`。 3.3.3 自动装箱与自动拆箱 Java 5 引入的特性,使得基本类型和包装类之间的转换更加便捷。 3.3.4 常用方法 `valueOf(String s)`:将字符串转换为对应的包装类对象。 `parseXxx(String s)`:将字符串解析为基本数据类型(如 `Integer.parseInt(String s)`)。 `toString()`:将包装类对象转换为字符串。 3.4 集合框架(Collections Framework) 3.4.1 集合框架的概述 提供了一套统一的接口和实现类,用于存储、检索、操作和管理对象的集合。 3.4.2 `List` 接口 有序集合,允许重复元素。 常用实现类: `ArrayList`:基于动态数组,随机访问效率高,增删改效率较低。 `LinkedList`:基于双向链表,增删改效率高,随机访问效率较低。 3.4.3 `Set` 接口 无序集合,不允许重复元素。 常用实现类: `HashSet`:基于哈希表,存取效率高,无序。 `TreeSet`:基于红黑树,元素有序(自然排序或自定义排序)。 3.4.4 `Map` 接口 键值对(key-value)存储结构,键是唯一的。 常用实现类: `HashMap`:基于哈希表,存取效率高,无序。 `TreeMap`:基于红黑树,键有序。 3.4.5 常用方法 `add()`:添加元素。 `remove()`:移除元素。 `get()`:获取元素(Map)。 `size()`:获取集合大小。 `isEmpty()`:判断集合是否为空。 `contains()`:判断是否包含某个元素。 迭代器(Iterator): 遍历集合的通用方式。 3.5 日期与时间 API 3.5.1 `Date` 类 表示特定的瞬间,精确到毫秒。 不推荐使用,存在一些设计问题。 3.5.2 `Calendar` 类 提供了一个通用的方法来处理日期和时间。 也是一个比较老的 API。 3.5.3 `java.time` 包(Java 8 引入) 新的日期和时间 API,更加强大、灵活和易用。 常用类: `LocalDate`:表示日期(年、月、日)。 `LocalTime`:表示时间(时、分、秒、纳秒)。 `LocalDateTime`:表示日期和时间。 `ZonedDateTime`:表示带时区的日期和时间。 `Instant`:表示一个时间戳。 `DateTimeFormatter`:用于日期和时间的格式化和解析。 常用操作: 获取当前日期/时间、创建指定日期/时间、日期/时间计算、格式化、解析。 第四章:异常处理 健壮的程序需要能够优雅地处理运行时可能出现的错误。本章将介绍 Java 的异常处理机制。 4.1 异常的概念 4.1.1 什么是异常? 程序运行时发生的意外事件,导致程序无法正常执行。 4.1.2 异常的分类 Error: 表示程序运行环境中出现的严重问题,通常是不可恢复的(如 `OutOfMemoryError`)。 Exception: 表示程序本身可以处理的异常。 检查性异常(Checked Exceptions): 编译时必须处理的异常,否则编译器会报错(如 `IOException`、`SQLException`)。 非检查性异常(Unchecked Exceptions): 运行时才会发生的异常,编译器不强制要求处理(如 `NullPointerException`、`ArrayIndexOutOfBoundsException`)。 4.2 异常处理机制 4.2.1 `try-catch` 块 `try` 块:包含可能发生异常的代码。 `catch` 块:捕获并处理指定类型的异常。 可以有多个 `catch` 块,按照异常的继承关系从子类到父类排序。 4.2.2 `finally` 块 无论是否发生异常,`finally` 块中的代码都会被执行,通常用于释放资源(如关闭文件流)。 4.2.3 `throws` 关键字 用于声明一个方法可能会抛出某种类型的异常,将异常处理的责任转交给调用者。 4.2.4 `throw` 关键字 用于手动抛出一个异常对象。 4.3 自定义异常 4.3.1 为什么需要自定义异常? 更好地表达程序中的业务逻辑错误。 4.3.2 如何自定义异常? 创建一个类,继承自 `Exception`(或其子类,如 `RuntimeException`)。 提供构造方法,可以接受异常信息。 第五章:输入输出(I/O)流 本章将学习如何使用 Java 的 I/O 流来处理文件和数据传输。 5.1 I/O 流概述 5.1.1 流的概念 数据从源流向目的地的抽象。 5.1.2 流的分类 按方向: 输入流(Input Stream)、输出流(Output Stream)。 按处理单位: 字节流(Byte Stream)、字符流(Character Stream)。 按功能: 节点流(直接与 I/O 设备连接)、处理流(对节点流进行包装,提供附加功能)。 5.2 字节流 5.2.1 输入字节流:`InputStream` `FileInputStream`:从文件中读取字节。 `BufferedInputStream`:提高读取效率。 5.2.2 输出字节流:`OutputStream` `FileOutputStream`:向文件中写入字节。 `BufferedOutputStream`:提高写入效率。 5.3 字符流 5.3.1 输入字符流:`Reader` `FileReader`:从文件中读取字符。 `BufferedReader`:提供按行读取的方法(`readLine()`)。 `InputStreamReader`:将字节流转换为字符流。 5.3.2 输出字符流:`Writer` `FileWriter`:向文件中写入字符。 `BufferedWriter`:提供按行写入的方法(`newLine()`)。 `OutputStreamWriter`:将字符流转换为字节流。 5.4 文件操作 5.4.1 `File` 类 表示文件或目录的路径名。 常用方法: `createNewFile()`、`delete()`、`exists()`、`isDirectory()`、`isFile()`、`length()`、`list()`、`mkdir()`、`mkdirs()`。 5.5 序列化与反序列化 5.5.1 `Serializable` 接口 标记接口,用于指示一个类的对象可以被序列化。 5.5.2 `ObjectInputStream` 和 `ObjectOutputStream` 用于对象的序列化(写入)和反序列化(读出)。 第六章:多线程编程 本章将介绍 Java 的多线程编程,让您能够编写更高效、响应更快的应用程序。 6.1 线程的概念 6.1.1 进程与线程的区别 进程是独立的执行单元,线程是进程内的执行单元。 6.1.2 线程的生命周期 新建、就绪、运行、阻塞、终止。 6.2 线程的创建与启动 6.2.1 继承 `Thread` 类 重写 `run()` 方法,定义线程要执行的任务。 创建 `Thread` 对象,调用 `start()` 方法启动线程。 6.2.2 实现 `Runnable` 接口 实现 `run()` 方法,定义线程要执行的任务。 创建 `Runnable` 对象,再创建一个 `Thread` 对象,将 `Runnable` 对象作为参数传入,调用 `start()` 方法启动线程。 6.2.3 线程池 复用已创建的线程,提高效率(在后面的高级主题中会更详细介绍)。 6.3 线程的同步 6.3.1 为什么需要同步? 解决多线程访问共享资源时可能出现的线程安全问题。 6.3.2 `synchronized` 关键字 同步方法: 锁定当前对象。 同步代码块: 指定锁定的对象。 6.3.3 `wait()`、`notify()`、`notifyAll()` 方法 用于线程间的通信和协作,必须在 `synchronized` 代码块中调用。 6.4 线程的通信 6.4.1 `volatile` 关键字 保证多线程下变量的可见性。 6.4.2 Lock 接口(`java.util.concurrent.locks`) 提供了比 `synchronized` 更灵活的锁机制。 第七章:网络编程基础 本章将介绍 Java 的网络编程,使您能够开发网络应用程序。 7.1 网络基础知识 7.1.1 IP 地址与端口号 IP 地址用于标识网络上的设备,端口号用于标识设备上的应用程序。 7.1.2 TCP 与 UDP 协议 TCP(传输控制协议):面向连接,可靠传输。 UDP(用户数据报协议):无连接,不可靠传输,速度快。 7.2 TCP 网络编程 7.2.1 `Socket` 类 客户端和服务器端通信的套接字。 `ServerSocket`:服务器端监听客户端连接。 `Socket`:客户端连接服务器。 7.2.2 常用方法 `bind()`、`accept()`、`connect()`、`getInputStream()`、`getOutputStream()`、`close()`。 7.3 UDP 网络编程 7.3.1 `DatagramSocket` 类 用于发送和接收 UDP 数据报。 7.3.2 `DatagramPacket` 类 封装 UDP 数据报的内容、目标地址等信息。 7.3.3 常用方法 `send()`、`receive()`、`getAddress()`、`getPort()`。 第八章:反射机制 反射机制允许程序在运行时检查、修改类、对象、方法等属性。 8.1 反射的概念与作用 在运行时动态地获取类的信息,调用方法,访问属性。 应用场景:框架设计、动态代理、注解处理器等。 8.2 获取 `Class` 对象 8.2.1 通过类名获取: `ClassName.class` 8.2.2 通过对象获取: `object.getClass()` 8.2.3 通过类名字符串获取: `Class.forName("com.example.MyClass")` 8.3 使用 `Class` 对象 8.3.1 获取类信息: `getName()`、`getSimpleName()`、`getPackage()`、`getInterfaces()`、`getSuperclass()`。 8.3.2 获取构造方法: `getConstructor(Class>... parameterTypes)`、`getDeclaredConstructor(Class>... parameterTypes)`。 8.3.3 获取成员变量: `getField(String name)`、`getFields()`、`getDeclaredField(String name)`、`getDeclaredFields()`。 8.3.4 获取成员方法: `getMethod(String name, Class>... parameterTypes)`、`getMethods()`、`getDeclaredMethod(String name, Class>... parameterTypes)`、`getDeclaredMethods()`。 8.4 调用方法与访问属性 8.4.1 创建对象: `constructor.newInstance(Object... initargs)`。 8.4.2 调用方法: `method.invoke(Object obj, Object... args)`。 8.4.3 访问属性: `field.set(Object obj, Object value)`、`field.get(Object obj)`。 8.4.4 访问私有成员:需要调用 `setAccessible(true)`。 第九章:Java 8 新特性(部分介绍) Java 8 引入了许多重要的特性,极大地提升了开发效率和代码的可读性。 9.1 Lambda 表达式 9.1.1 Lambda 表达式的语法 简洁地表示一个匿名函数。 9.1.2 函数式接口 只有一个抽象方法的接口,可以与 Lambda 表达式结合使用。 9.1.3 常用函数式接口 `Consumer`、`Supplier`、`Predicate`、`Function`。 9.2 Stream API 9.2.1 Stream 的概念 对数据源(如集合)进行一系列流水线操作。 9.2.2 常用操作 中间操作: `filter()`、`map()`、`flatMap()`、`sorted()`。 终端操作: `forEach()`、`collect()`、`reduce()`、`count()`、`anyMatch()`、`allMatch()`。 9.3 接口的默认方法与静态方法 9.3.1 默认方法: 允许在接口中定义带有实现的方法。 9.3.2 静态方法: 允许在接口中定义静态方法,用于提供工具方法。 第十章:数据库连接(JDBC) 本章将介绍 Java 数据库连接(JDBC),使您能够与关系型数据库进行交互。 10.1 JDBC 概述 10.1.1 JDBC 的作用 Java API,用于连接数据库,执行 SQL 语句。 10.1.2 JDBC 驱动程序 不同数据库厂商提供的用于实现 JDBC API 的库。 10.1.3 JDBC 驱动程序类型 Type 1 (JDBC-ODBC Bridge Driver) Type 2 (Native-API Driver) Type 3 (Network Protocol Driver) Type 4 (Thin Driver) 10.2 JDBC 操作步骤 10.2.1 加载 JDBC 驱动程序 `Class.forName("com.mysql.cj.jdbc.Driver")` 10.2.2 建立数据库连接 `DriverManager.getConnection(url, user, password)` 10.2.3 创建 `Statement` 对象 用于执行 SQL 语句。 `Statement`、`PreparedStatement`(推荐,防止 SQL 注入)、`CallableStatement`。 10.2.4 执行 SQL 语句 `executeQuery()`:用于执行查询语句,返回 `ResultSet`。 `executeUpdate()`:用于执行 DML 语句(INSERT, UPDATE, DELETE),返回受影响的行数。 10.2.5 处理 `ResultSet` 遍历查询结果。 10.2.6 关闭数据库连接 `Connection.close()`、`Statement.close()`、`ResultSet.close()`。 10.3 事务管理 10.3.1 什么是事务? 一系列数据库操作的逻辑单元,要么全部成功,要么全部失败。 10.3.2 事务的 ACID 特性 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 10.3.3 JDBC 中的事务控制 `connection.setAutoCommit(false)`:关闭自动提交。 `connection.commit()`:提交事务。 `connection.rollback()`:回滚事务。 附录: 附录 A:开发工具推荐 介绍流行的 Java IDE,如 IntelliJ IDEA、Eclipse、VS Code,以及 Maven、Gradle 等构建工具。 附录 B:常见问题解答 整理和解答在学习过程中可能遇到的常见问题。 附录 C:参考资料 提供进一步学习的官方文档、书籍、网站等资源。 本书旨在为读者提供一个全面、深入的 Java 语言学习路径。从基础的语法和面向对象概念,到核心的类库、异常处理、I/O、多线程、网络编程、反射、数据库连接以及 Java 8 的新特性,力求覆盖 Java 开发中的关键知识点。通过大量的实例和详细的讲解,帮助读者掌握 Java 编程的精髓,并能够独立完成实际的项目开发。