目录CONTENTS 第一篇基础篇 第1章Java概述3 本章学习目标3 1.1认识Java语言3 1.1.1Java语言的特点4 1.1.2Java平台的体系结构4 1.2Java运行环境与开发环境5 1.2.1Java运行环境5 1.2.2安装JDK5 1.2.3安装Eclipse开发工具6 1.3Java程序举例7 1.3.1用Eclipse编写第一个Java Application7 1.3.2用Eclipse编写带命令行参数的应用程序12 习题与思考14 第2章Java程序设计基础15 本章学习目标15 2.1标识符和关键字15 2.1.1如何定义标识符15 2.1.2关键字16 2.1.3注释16 2.2常量和变量17 2.2.1变量17 2.2.2常量18 2.3基本数据类型18 2.3.1布尔类型18 2.3.2字符类型19 2.3.3整数类型20 2.3.4浮点类型20 2.3.5各类型数据间的相互转换21 2.4运算符21 2.4.1算术运算符22 2.4.2赋值运算符23 2.4.3条件运算符24 2.4.4位运算符24 2.4.5关系运算符26 2.4.6逻辑运算符26 2.5表达式与计算的优先级27 2.6程序控制语句28 2.6.1if语句28 2.6.2switch语句与表达式29 2.6.3while与dowhile语句31 2.6.4for语句32 2.6.5break语句34 2.6.6continue语句35 2.6.7return语句36 2.6.8实用案例: 计算斐波那契(Fibonacci)数列37 2.7实训任务38 习题与思考39 目录Java程序设计(第3版)第3章数组40 本章学习目标40 3.1数组使用初探40 3.2一维数组41 3.2.1定义数组41 3.2.2生成数组41 3.2.3初始化数组41 3.2.4访问数组42 3.2.5实用案例3.1: 求一维数组的最大值及位置42 3.3二维数组43 3.3.1定义二维数组43 3.3.2二维数组元素的引用44 3.3.3实用案例3.2: 求两个矩阵的乘积44 3.4Arrays类46 实用案例3.3对数组按中文名称排序47 3.5数组实训任务48 习题与思考49 第4章类和对象设计51 本章学习目标51 4.1面向对象基础51 4.2类和对象初探52 4.3定义类53 4.3.1定义成员变量54 4.3.2定义成员方法54 4.3.3方法重载55 4.4对象56 4.4.1实例化对象56 4.4.2初始化对象57 4.4.3使用对象58 4.4.4使用静态变量和方法59 4.4.5清除对象61 4.4.6应用程序与命令行参数62 4.4.7实用案例63 4.5包64 4.5.1包的定义65 4.5.2包的引入65 4.5.3模块66 4.6类及成员修饰符67 4.7类和对象实训任务69 习题与思考73 第5章Java继承与高级特性74 本章学习目标74 5.1继承使用初探74 5.2类的继承75 5.2.1继承的实现75 5.2.2继承与重写77 5.2.3继承与类型转换79 5.2.4实用案例80 5.3多态81 5.3.1多态性的概念81 5.3.2实用案例83 5.4抽象类与抽象方法83 5.4.1定义抽象类及实现抽象方法83 5.4.2实用案例84 5.5接口85 5.5.1接口定义85 5.5.2接口实现86 5.5.3接口中的默认方法和静态方法87 5.5.4Comparable与Comparator接口88 5.5.5实用案例90 5.6内部类92 5.6.1成员内部类92 5.6.2局部内部类92 5.6.3静态内部类(嵌套类)93 5.6.4匿名(内部)类93 5.6.5实用案例94 5.7Lambda表达式95 5.7.1初识作用95 5.7.2Lambda表达式定义95 5.7.3函数式接口95 5.7.4预定义函数式接口97 5.7.5双冒号运算99 5.7.6实用案例100 5.8Java类的高级特性100 5.8.1泛型100 5.8.2Java类加载机制104 5.8.3Java反射机制104 5.8.4实用案例109 5.8.5枚举类型112 5.8.6Java注解113 5.9继承与高级特性实训任务116 习题与思考119 第6章Java标准类库121 本章学习目标121 6.1简介121 6.2字符串类121 6.2.1String类122 6.2.2StringBuffer类126 6.2.3正则表达式127 6.2.4实用案例6.1: 使用正则表达式检查IP地址130 6.3数据类型包装器类131 6.3.1整型包装器类131 6.3.2实用案例6.2: 字符串和数字的相互转换132 6.4System类的使用133 6.4.1记录程序执行的时间133 6.4.2复制数组133 6.5Math和Random类的使用134 6.5.1Math类134 6.5.2Random类135 6.5.3实用案例6.3: 随机生成字符数组并排序136 6.6日期时间实用工具类136 6.6.1Date与LocalDateTime类136 6.6.2实用案例6.4: 日期的格式化138 6.7Java集合类139 6.7.1集合接口139 6.7.2实现List接口的类141 6.7.3实现Set接口的类142 6.7.4实现Queue接口的类144 6.7.5通过迭代接口访问集合类145 6.7.6映射接口147 6.7.7实现Map接口的类148 6.7.8比较与排序151 6.7.9实用案例6.5: 学生成绩检索和排序153 6.8Stream的使用154 6.8.1创建Stream154 6.8.2中间操作155 6.8.3终结操作156 6.8.4实用案例6.6: 使用Stream处理成绩157 6.9标准类实训任务159 习题与思考160 第二篇提高篇 第7章异常处理165 本章学习目标165 7.1为什么需要异常处理165 7.2异常概述168 7.2.1什么是异常168 7.2.2异常处理带来的好处169 7.3异常处理机制171 7.3.1Java的异常处理机制171 7.3.2异常类的类层次171 7.3.3异常的处理173 7.3.4实用案例: 找出数据文件中的最大值176 7.4自定义异常类178 7.5异常处理实训任务179 习题与思考180 第8章输入输出处理182 本章学习目标182 8.1流的作用182 8.2流的划分183 8.3标准输入输出流185 8.3.1标准输入185 8.3.2Scanner类封装标准输入流185 8.3.3标准输出和格式化输出186 8.3.4实用案例8.1: 数据的格式化输出187 8.4字节流使用188 8.4.1File类188 8.4.2文件字节流191 8.4.3字节过滤流193 8.4.4实用案例8.2: 文件加密解密195 8.5字符流使用196 8.5.1字节流向字符流的转化196 8.5.2读写文本文件197 8.5.3实用案例8.3: 文本替换199 8.6高级流处理199 8.6.1Path和Files的使用200 8.6.2使用通道和缓冲区读写文件201 8.6.3实用案例8.4: 文件夹的深度复制204 8.7串行化205 8.7.1串行化的概念205 8.7.2实用案例8.5: 串行化学生对象205 8.8输入输出处理实训任务207 习题与思考210 第9章Java多线程211 本章学习目标211 9.1为什么使用多线程211 9.2线程的概念212 9.3线程的创建213 9.3.1继承Thread创建线程213 9.3.2实现接口Runnable创建线程214 9.3.3使用Timer创建线程215 9.3.4实用案例9.1: 使用线程池创建线程216 9.4线程的生命周期及调度219 9.4.1线程生命周期219 9.4.2线程调度和优先级219 9.4.3线程的终止221 9.4.4实用案例9.2: 周期性检测中断结束线程222 9.5多线程互斥与同步223 9.5.1线程的互斥223 9.5.2线程的同步226 9.5.3实用案例9.3: 使用显式锁实现多线程互斥229 9.6多线程实训任务230 习题与思考234 第10章GUI程序设计235 本章学习目标235 10.1为什么学习GUI程序设计235 10.2基于Swing的简单界面设计236 10.2.1Swing简介236 10.2.2Swing的类层次结构237 10.2.3常见GUI组件238 10.2.4基于AWT的GUI程序240 10.3界面布局241 10.3.1无布局管理器布局242 10.3.2FlowLayout243 10.3.3BorderLayout243 10.3.4GridLayout244 10.3.5利用可视化工具进行布局245 10.3.6实用案例10.1: 布局复杂界面248 10.4响应用户事件250 10.4.1事件处理的基本过程250 10.4.2常用事件与事件监听器类252 10.4.3键盘与鼠标事件254 10.4.4实用案例10.2: 用鼠标绘图256 10.5高级组件JTree和JTable258 10.5.1JTree组件258 10.5.2JTable组件261 10.5.3实用案例10.3: 动态表格264 10.6GUI程序设计实训任务265 习题与思考270 第三篇网络篇 第11章网络通信273 本章学习目标273 11.1类URL与URLConnection273 实用案例11.1: 实现单线程的资源下载器276 11.2类InetAddress277 实用案例11.2: 获得指定内网中所有活动IP278 11.3Socket通信279 11.3.1基于TCP的Socket通信279 11.3.2实用案例11.3: 单客户端Socket通信281 11.3.3实用案例11.4: 多客户端Socket通信282 11.3.4基于UDP的网络通信285 11.3.5实用案例11.5: 简单的UDP通信示例286 11.3.6基于MulticastSocket实现多点广播288 11.4网络通信实训任务290 习题与思考291 第12章JSP与Servlet技术292 本章学习目标292 12.1为什么使用JSP292 12.2JSP技术293 12.2.1JSP工作原理293 12.2.2JSP的构成295 12.2.3JSP内建对象298 12.2.4实用案例12.1: 商品信息展示302 12.3Servlet技术304 12.3.1Servlet介绍304 12.3.2Servlet常用接口的使用305 12.3.3使用HttpServlet处理客户端请求309 12.3.4获得Servlet初始化参数312 12.3.5实用案例12.2: 基于Session实现简单的用户问好功能313 12.4JSP和Servlet结合的方法315 12.4.1模式一: JSP+JavaBean315 12.4.2模式二: JSP+Servlet+JavaBean315 12.4.3JSP和Servlet的选择315 12.4.4实用案例12.3: 网站计数器功能316 12.5JSP与Servlet开发实训任务317 习题与思考320 第13章用Tomcat构建Web站点321 本章学习目标321 13.1Tomcat简介321 13.2安装配置Tomcat322 13.3编写简单的Web站点322 13.3.1配置服务器运行环境322 13.3.2新建动态Web工程324 13.3.3Web工程的结构325 13.3.4新建Servlet和JSP程序325 13.4运行Web站点328 13.5发布Web站点330 习题与思考331 第14章JDBC技术332 本章学习目标332 14.1为什么需要JDBC332 14.2数据库和常用的SQL语句334 14.2.1创建、删除数据库334 14.2.2创建、删除表334 14.2.3插入一条数据334 14.2.4在表中删除数据335 14.2.5更新表中的数据335 14.2.6查询表中的数据335 14.2.7条件子句335 14.3JDBC的结构336 14.4通过JDBC访问数据库337 14.4.1加载JDBC驱动程序337 14.4.2建立连接337 14.4.3执行SQL语句338 14.4.4检索结果339 14.4.5关闭连接339 14.4.6通过数据库连接池获得数据库连接339 14.4.7实用案例14.1: 查询指定商品状态的Java应用程序340 14.4.8实用案例14.2: 显示已有商品单价的JSP页面342 14.4.9事务处理344 14.4.10实用案例14.3: 事务操作345 14.5JDBC实训任务348 习题与思考353 第四篇实例篇 第15章Java应用开发案例357 本章学习目标357 15.1基于MVC模式的简单学生信息管理357 15.1.1MVC模式357 15.1.2创建数据库358 15.1.3程序的基本结构359 15.1.4模型359 15.1.5视图364 15.1.6控制器371 15.2基于Spring Boot的简单学生信息管理375 15.2.1Spring和Spring Boot框架375 15.2.2Spring Boot程序的基本结构376 15.2.3pom.xml文件376 15.2.4application.yml文件378 15.2.5模型379 15.2.6视图381 15.2.7控制器381 15.2.8运行项目383