目录 第一篇Java基础 第1章开篇综述 1.1Java语言历史 1.2Java语言特点 1.3Java平台 1.3.1Java SE 1.3.2Java EE 1.3.3Java ME 1.4Java虚拟机 1.5本章小结 1.6同步练习 第2章开发环境搭建 2.1JDK工具包 2.1.1Windows平台安装JDK 14环境要求 2.1.2JDK下载和安装 2.1.3设置环境变量 2.2IntelliJ IDEA开发工具 2.2.1IntelliJ IDEA下载 2.2.2IntelliJ IDEA安装 2.3使用文本编辑工具 2.4本章小结 2.5动手实践 第3章第一个Java程序 3.1使用IntelliJ IDEA 实现 3.1.1创建项目 3.1.2创建类 3.1.3运行程序 3.2文本编辑工具+JDK实现 3.2.1编写源代码文件 3.2.2编译程序 3.2.3运行程序 3.3代码解释 3.4本章小结 3.5动手实践: 世界,你好! 第4章Java语法基础 4.1标识符、关键字和保留字 4.1.1标识符 4.1.2关键字 4.2Java分隔符 4.3变量 4.3.1变量声明 4.3.2使用Java 10局部变量类型推断 4.4常量 4.5Java源代码文件 4.6包 4.6.1定义包 4.6.2引入包 4.6.3常用包 4.7本章小结 4.8同步练习 第5章Java编码规范 5.1命名规范 5.2注释规范 5.2.1文件注释 5.2.2文档注释 5.2.3代码注释 5.3代码排版 5.3.1空行 5.3.2空格 5.3.3缩进 5.3.4断行 5.4其他规范 5.5本章小结 5.6同步练习 第6章数据类型 6.1基本数据类型 6.1.1整数类型 6.1.2浮点类型 6.1.3字符类型 6.1.4布尔类型 6.2数值表示方式 6.2.1进制数字表示 6.2.2指数表示 6.3数值类型相互转换 6.3.1自动类型转换 6.3.2强制类型转换 6.4引用数据类型 6.5本章小结 6.6同步练习 第7章运算符 7.1算术运算符 7.1.1一元运算符 7.1.2二元运算符 7.1.3算术赋值运算符 7.2关系运算符 7.3逻辑运算符 7.4位运算符 7.5其他运算符 7.6运算符优先级 7.7本章小结 7.8同步练习 第8章控制语句 8.1分支语句 8.1.1if语句 8.1.2switch语句 8.1.3Java 14中switch新特性 8.2循环语句 8.2.1while语句 8.2.2dowhile语句 8.2.3for语句 8.2.4增强for语句 8.3跳转语句 8.3.1break语句 8.3.2continue语句 8.4本章小结 8.5同步练习 8.6动手实践: 计算水仙花数 第9章数组 9.1一维数组 9.1.1数组声明 9.1.2数组初始化 9.1.3案例: 数组合并 9.2多维数组 9.2.1二维数组声明 9.2.2二维数组的初始化 9.2.3不规则数组 9.3本章小结 9.4同步练习 9.5动手实践: 排序给定整数 第10章字符串 10.1Java中的字符串 10.2使用API文档 10.3不可变字符串 10.3.1String 10.3.2字符串池 10.3.3字符串拼接 10.3.4字符串查找 10.3.5字符串比较 10.3.6字符串截取 10.4可变字符串 10.4.1StringBuffer和StringBuilder 10.4.2字符串追加 10.4.3字符串插入、删除和替换 10.5本章小结 10.6同步练习 10.7动手实践: 公民身份号码识别 第二篇面 向 对 象 第11章面向对象基础 11.1面向对象编程 11.2面向对象三个基本特性 11.3类 11.3.1类声明 11.3.2类体 11.4方法重载 11.5封装性与访问控制 11.5.1私有级别 11.5.2默认级别 11.5.3保护级别 11.5.4公有级别 11.6静态变量和静态方法 11.7静态代码块 11.8本章小结 11.9同步练习 第12章对象 12.1创建对象 12.2空对象 12.3构造方法 12.3.1构造方法概念 12.3.2默认构造方法 12.3.3构造方法重载 12.3.4构造方法封装 12.4this关键字 12.5对象销毁 12.6本章小结 12.7同步练习 第13章继承与多态 13.1Java中的继承 13.2调用父类构造方法 13.3成员变量隐藏和方法覆盖 13.3.1成员变量隐藏 13.3.2方法的覆盖 13.4多态 13.4.1多态概念 13.4.2引用类型检查 13.4.3引用类型转换 13.5再谈final关键字 13.5.1final修饰变量 13.5.2final修饰类 13.5.3final修饰方法 13.6本章小结 13.7同步练习 第14章抽象类与接口 14.1抽象类 14.1.1抽象类概念 14.1.2抽象类声明和实现 14.2接口 14.2.1抽象类与接口区别 14.2.2接口声明和实现 14.2.3接口与多继承 14.2.4接口继承 14.2.5接口中的默认方法和静态方法 14.3本章小结 14.4同步练习 第15章枚举类 15.1枚举概述 15.2枚举类声明 15.2.1最简单形式的枚举类 15.2.2枚举类中成员变量和成员方法 15.2.3枚举类构造方法 15.3枚举常用方法 15.4本章小结 15.5同步练习 第16章Java常用类 16.1Java根类——Object 16.1.1toString()方法 16.1.2对象比较方法 16.2包装类 16.2.1数值包装类 16.2.2Character类 16.2.3Boolean类 16.2.4自动装箱/拆箱 16.3Math类 16.4大数值 16.4.1BigInteger类 16.4.2BigDecimal类 16.5日期和时间相关类 16.5.1Date类 16.5.2日期格式化和解析 16.5.3Calendar类 16.6本章小结 16.7同步练习 第17章内部类 17.1内部类概述 17.1.1内部类的作用 17.1.2内部类的分类 17.2成员内部类 17.2.1实例成员内部类 17.2.2静态成员内部类 17.3局部内部类 17.4匿名内部类 17.5本章小结 17.6同步练习 第18章Java函数式编程 18.1Lambda表达式概述 18.1.1从一个示例开始 18.1.2Lambda表达式实现 18.1.3函数式接口 18.2Lambda表达式简化形式 18.2.1省略参数类型 18.2.2省略参数小括号 18.2.3省略return和大括号 18.3作为参数使用Lambda表达式 18.4访问变量 18.4.1访问成员变量 18.4.2捕获局部变量 18.5方法引用 18.6本章小结 18.7同步练习 18.8动手实践: 找出素数 第三篇Java进阶 第19章异常处理 19.1从一个问题开始 19.2异常类继承层次 19.2.1Throwable类 19.2.2Error和Exception 19.2.3受检查异常和运行时异常 19.3捕获异常 19.3.1trycatch语句 19.3.2多catch代码块 19.3.3trycatch语句嵌套 19.3.4多重捕获 19.4释放资源 19.4.1finally代码块 19.4.2自动资源管理 19.5throws与声明方法抛出异常 19.6自定义异常类 19.7throw与显式抛出异常 19.8本章小结 19.9同步练习 19.10动手实践: 编写自己的异常处理类 第20章对象容器——集合 20.1集合概述 20.2List集合 20.2.1常用方法 20.2.2遍历集合 20.3Set集合 20.3.1常用方法 20.3.2遍历集合 20.4Map集合 20.4.1常用方法 20.4.2遍历集合 20.5本章小结 20.6同步练习 第21章泛型 21.1一个问题的思考 21.2使用泛型 21.3自定义泛型类 21.4自定义泛型接口 21.5泛型方法 21.6本章小结 21.7同步练习 21.8动手实践: 编写自己的泛型类 第22章文件管理与I/O流 22.1文件管理 22.1.1File类 22.1.2案例: 文件过滤 22.2I/O流概述 22.2.1Java流设计理念 22.2.2流类继承层次 22.3字节流 22.3.1InputStream抽象类 22.3.2OutputStream抽象类 22.3.3案例: 文件复制 22.3.4使用字节缓冲流 22.4字符流 22.4.1Reader抽象类 22.4.2Writer抽象类 22.4.3案例: 文件复制 22.4.4使用字符缓冲流 22.4.5字节流转换字符流 22.5本章小结 22.6同步练习 22.7动手实践: 读写日期 第23章多线程编程 23.1基础知识 23.1.1进程 23.1.2线程 23.1.3主线程 23.2创建子线程 23.2.1实现Runnable接口 23.2.2继承Thread线程类 23.2.3使用匿名内部类和Lambda表达式实现线程体 23.3线程的状态 23.4线程管理 23.4.1线程优先级 23.4.2等待线程结束 23.4.3线程让步 23.4.4线程停止 23.5线程安全 23.5.1临界资源问题 23.5.2多线程同步 23.6线程间通信 23.7本章小结 23.8同步练习 23.9动手实践: 时钟应用 第24章网络编程 24.1网络基础 24.1.1网络结构 24.1.2TCP/IP 24.1.3IP地址 24.1.4端口 24.2TCP Socket低层次网络编程 24.2.1TCP Socket通信概述 24.2.2TCP Socket通信过程 24.2.3Socket类 24.2.4ServerSocket类 24.2.5案例: 文件上传工具 24.2.6案例: 聊天工具 24.3UDP Socket低层次网络编程 24.3.1DatagramSocket类 24.3.2DatagramPacket类 24.3.3案例: 文件上传工具 24.3.4案例: 聊天工具 24.4数据交换格式 24.4.1JSON文档结构 24.4.2使用第三方JSON库 24.4.3JSON数据编码和解码 24.4.4 案例: 聊天工具 24.5访问互联网资源 24.5.1URL概念 24.5.2HTTP/HTTPS协议 24.5.3搭建自己的Web服务器 24.5.4使用URL类 24.5.5使用HttpURLConnection发送GET请求 24.5.6使用HttpURLConnection发送POST请求 24.5.7案例: Downloader 24.6本章小结 24.7同步练习 24.8动手实践: 解析来自于Web的结构化数据 第25章Swing图形用户界面编程 25.1Java图形用户界面技术 25.2Swing技术基础 25.2.1Swing类层次结构 25.2.2Swing程序结构 25.3事件处理模型 25.3.1采用内部类处理事件 25.3.2采用Lambda表达式处理事件 25.3.3使用适配器 25.4布局管理 25.4.1FlowLayout布局 25.4.2BorderLayout布局 25.4.3GridLayout布局 25.4.4不使用布局管理器 25.5Swing组件 25.5.1标签和按钮 25.5.2文本输入组件 25.5.3复选框和单选按钮 25.5.4下拉列表 25.5.5列表 25.5.6分隔面板 25.5.7使用表格 25.6案例: 图书库存 25.7本章小结 25.8同步练习 25.9动手实践: 展示Web数据 第26章反射 26.1Java反射机制API 26.1.1java.lang.Class类 26.1.2java.lang.reflect包 26.2创建对象 26.2.1调用构造方法 26.2.2案例: 依赖注入实现 26.3调用方法 26.4调用成员变量 26.5本章小结 26.6同步练习 第27章注解 27.1基本注解 27.1.1@Override 27.1.2@Deprecated 27.1.3@SuppressWarnings 27.1.4@SafeVarargs 27.1.5@FunctionalInterface 27.2元注解 27.3自定义注解 27.3.1声明注解 27.3.2案例: 使用元注解 27.3.3案例: 读取运行时注解信息 27.4本章小结 27.5同步练习 第28章数据库编程 28.1数据持久化技术概述 28.2MySQL数据库管理系统 28.2.1数据库安装和配置 28.2.2登录服务器 28.2.3常见的管理命令 28.3JDBC技术 28.3.1JDBC API 28.3.2加载驱动程序 28.3.3建立数据连接 28.3.4三个重要接口 28.4案例: 数据CRUD操作 28.4.1数据库编程一般过程 28.4.2数据查询操作 28.4.3数据修改操作 28.5本章小结 28.6同步练习 28.7动手实践: 从结构化文档迁移数据到数据库 第四篇项 目 实 战 第29章项目实战1: 开发PetStore宠物商店项目 29.1系统分析与设计 29.1.1项目概述 29.1.2需求分析 29.1.3原型设计 29.1.4数据库设计 29.1.5架构设计 29.1.6系统设计 29.2任务1: 创建数据库 29.2.1迭代1.1: 安装和配置MySQL数据库 29.2.2迭代1.2: 编写数据库DDL脚本 29.2.3迭代1.3: 插入初始数据到数据库 29.3任务2: 初始化项目 29.3.1迭代2.1: 配置项目构建路径 29.3.2迭代2.2: 添加资源图片 29.3.3迭代2.3: 添加包 29.4任务3: 编写数据持久层代码 29.4.1迭代3.1: 编写实体类 29.4.2迭代3.2: 数据库帮助类DBHelper 29.4.3迭代3.3: 编写DAO类 29.5任务4: 编写表示层代码 29.5.1迭代4.1: 编写启动类 29.5.2迭代4.2: 编写自定义窗口类——MyFrame 29.5.3迭代4.3: 用户登录窗口 29.5.4迭代4.4: 商品列表窗口 29.5.5迭代4.5: 商品购物车窗口 29.6任务5: 应用程序打包发布 29.6.1迭代5.1: 处理TODO任务 29.6.2迭代5.2: 打包 第30章项目实战2: 开发Java版QQ聊天工具 30.1系统分析与设计 30.1.1项目概述 30.1.2需求分析 30.1.3原型设计 30.1.4数据库设计 30.1.5网络拓扑图 30.1.6系统设计 30.2任务1: 创建服务器端数据库 30.2.1迭代1.1: 安装和配置MySQL数据库 30.2.2迭代1.2: 编写数据库DDL脚本 30.2.3迭代1.3: 插入初始数据到数据库 30.3任务2: 创建项目 30.3.1迭代2.1: 创建QQ客户端项目 30.3.2迭代2.2: QQ客户端项目中添加资源图片 30.3.3迭代2.3: QQ客户端项目中添加包 30.3.4迭代2.4: QQ客户端项目添加JSONjava库 30.3.5迭代2.5: 创建QQ服务器项目 30.3.6迭代2.6: QQ服务器项目中添加包 30.3.7迭代2.7: QQ服务器项目添加库 30.4任务3: 编写QQ服务器项目外围代码 30.4.1迭代3.1: 数据库帮助类DBHelper 30.4.2迭代3.2: 编写UserDAO类 30.4.3迭代3.3: 编写ClientInfo类 30.5任务4: QQ客户端项目UI实现 30.5.1迭代4.1: 登录窗口实现 30.5.2迭代4.2: 好友列表窗口实现 30.5.3迭代4.3: 聊天窗口实现 30.6任务5: 用户登录过程实现 30.6.1迭代5.1: 客户端启动 30.6.2迭代5.2: 客户端登录编程 30.6.3迭代5.3: 服务器启动 30.6.4迭代5.4: 服务器验证编程 30.7任务6: 用户登录刷新好友列表 30.7.1迭代6.1: 用户登录刷新好友列表服务器端编程 30.7.2迭代6.2: 用户登录刷新好友列表客户端编程 30.8任务7: 聊天过程实现 30.8.1迭代7.1: 客户端用户1向用户3发送消息 30.8.2迭代7.2: 服务器接收用户1消息与转发给用户3消息 30.8.3迭代7.3: 客户端用户3接收用户1消息 30.9任务8: 用户下线刷新好友列表过程 30.9.1迭代8.1: 客户端编程 30.9.2迭代8.2: 服务器端编程 30.10测试与运行 30.10.1启动服务器 30.10.2启动服务器失败分析 30.10.3启动客户端 30.10.4启动客户端失败分析