Java程序设计(第2版)/21世纪大学本科计算机专业系列教材
定 价:49 元
丛书名:21世纪大学本科计算机专业系列教材
- 作者:朱庆生,古平 著
- 出版时间:2016/11/1
- ISBN:9787302454786
- 出 版 社:清华大学出版社
- 中图法分类:TP312.8
- 页码:408
- 纸张:胶版纸
- 版次:1
- 开本:16开
本书在内容组织和编写中充分融入了作者在承担“Java程序设计”国家精品课程和国家精品资源共享课程建设和教改中的成果,更加契合高等学校课程教学模式和学生渐进式学习的特点。遵循学生学习的认知过程和规律,以“兴趣为先、任务驱动、学以致用”的理念为指导思想,每个章节编写均采用WWH教学方式,即通过“理解知识概念(What)、把握原理和规律(Why)、掌握实现技巧(How)”,有机地将知识、理论融入到编程实践中。
本书在知识表达形式上改变了传统教材对知识平铺直叙的描述方式,而是将大量知识点融入到代码实例中进行讲解,由浅入深,通过对核心知识的实例化来提高学生的编程兴趣,让学生既知道需要学什么,又懂得如何学以致用。与其他Java教材相比,本书在重要知识点和案例选择中均针对实际问题需求,从软件开发者的视角进行讲解与分析,各知识点中均凝聚了作者在Java应用开发中的实际经验和教研成果,体现了知识的实用性。在注重基本知识的同时,将案例解决方法、过程和原理融入其中,提升学生分析问题和实际编程的能力。
本书可作为高等学校计算机及相关专业本科生“Java程序设计”课程的教材,也可作为需要运用Java语言开发应用的软件人员的自学参考书。
主任: 李晓明副主任: 蒋宗礼卢先和委员: (按姓氏笔画为序)
马华东马殿富王志英王晓东宁洪
刘辰孙茂松李仁发李文新杨波
吴朝晖何炎祥宋方敏张莉金海
周兴社孟祥旭袁晓洁钱乐秋黄国兴
曾明廖明宏秘书: 张瑞庆
本书主审: 李晓明
第2版前言FOREWORDJava语言是由Sun公司推出的面向对象程序设计语言,它的平台无关性特点非常适于网络应用,因而备受青睐。由于Java的体系和内容非常庞大,如何帮助初学者建立一个完整的知识体系,如何引导读者将Java的理论、实践和编程技能融为一体,是本书重点考虑的问题。
本书是网络教育国家精品课程和国家精品资源共享课程“Java程序设计”的配套教程,适合作为高等学校或网络教育Java课程的教材。
本书第1版出版5年多来,受到全国广大师生的好评,已7次印刷发行。教材第2版根据教育部高等学校计算机类专业教学指导委员会关于提升学生编程实践能力的精神,在总结课程教学改革经验基础上并结合对第1版教材的反馈意见修订而成。全书组织架构与第1版保持不变,内容由浅入深地分为4篇: “基础篇”(第1~6章)介绍面向对象程序设计的基本思想和Java核心语法;“提高篇”(第7~10章)讲述如何利用Java编程接口提升程序的实用性、可靠性和界面友好性;“网络篇”(第11~14章)在介绍网络通信知识基础上,讲述如何应用Java语言实现桌面应用和Web应用;“实例篇”(第15章)通过具体案例展示Java应用程序的设计过程、编程思路和技术,为项目实战积累编程经验。
第2版主要修改包括:
(1) 根据JDK 8版的新特性进行了版本更新,并增加了若干相关知识点,具体内容有: 第1章增加了Eclipse安装使用,同时删除原附录A;第3章增加了数组类Arrays;第5章增加了内部类、泛型、闭包、反射机制和注解技术等;第6章增加了正则表达式、Runtime类、自动装箱和拆箱技术等;第9章增加了线程池、多线程互斥与同步等;第10章弱化Applet,同时增强了Swing中的高级组件;第11章增加了多播通信技术;第14章增加了数据库事务管理等内容。
(2) 进一步丰富了导入案例、知识点案例和各章的综合案例,增加了一系列面向小节知识的实用小案例,力图通过解决模拟问题,培养学生思维能力,激发学生编程兴趣。
(3) 提供了与本书配套的、完整的案例源码,便于学生课后自我练习。
全书由朱庆生、古平、刘骥、葛亮、杨瑞龙编写。其中,朱庆生教授负责全书体系构思、编写框架、内容选择和编写指导等,并对全书进行审定和修改。第3、4、5、11章由古平副教授编写,第1、7、12、14章由葛亮副教授编写,第10、13、15章由刘骥老师编写,第2、6、8、9章由杨瑞龙老师编写。
本次修订,错误或遗漏之处在所难免,恳请批评指正。
作者
2016年9月第1版前言FOREWORDJava语言是由Sun公司推出的面向对象程序设计语言,它的平台无关性特点非常适于网络应用,因而备受青睐。Java语言正逐步成为全世界程序员使用最多的编程语言,并在桌面应用、Web应用、分布式应用、嵌入式应用系统中发挥着重要作用。
对于初学Java程序设计语言的人来说,Java的体系和内容显得非常复杂。如何帮助他们建立一个完整的知识体系,以及如何引导他们将Java的理论、实践和技能融为一体,是本书重点考虑的问题。
本书是在国家精品课程“Java程序设计”(网络)和教育部IBM精品课程“Java并发编程实践”的建设和实践教学中总结出来的实用教材,面向全国高校计算机及其相关专业本科生,也可供Java自学人员、软件开发人员参考使用。
全书内容由浅入深分为4篇。第一篇为基础篇(第1~6章),侧重介绍面向对象程序设计的基本思想和Java核心语法,包括Java运行环境、程序设计基础、数组、类和对象、继承与多态、Java标准类库等。通过这一部分的学习,读者能够掌握Java程序设计的基本方法,并能设计简单的Java程序。
第二篇为提高篇(第7~10章),讲述如何利用Java开放的编程接口提升程序的实用性、可靠性和界面友好性,包括Java的异常处理机制、输入输出处理、多线程、图形界面设计、Applet等。通过这一部分的学习,读者可以开发功能更复杂、界面更友好的实用Java应用系统。
第三篇为网络篇(第11~14章),介绍网络通信的基础知识,以及Java对桌面网络应用和Web应用的支持与实现,内容包括URL与Socket通信技术、Web编程技术、JDBC技术,以及上述技术在Tomcat与Eclipse开发平台中的具体实现。这是Java在网络通信、Web服务中应用的关键技术。
第四篇为实例篇(第15章),通过两个实用案例,分别展示Java桌面应用和Web应用程序的设计过程、思路和关键技术,是前3篇知识的综合应用,也为项目实战积累开发经验。
本书在编写上具有以下特点:
(1) 注重知识点之间的相互衔接。本书在章节安排上考虑了知识点之间的依赖关系,分析时层层推进,注重知识点之间的环环相扣。
(2) 采用Why—What—How的编写模式。本书采用“为什么学→学什么→如何学”的教学思路进行内容组织,每章首先通过“本章学习目标”让读者明确为什么学,其次通过具体案例引出需要学什么,然后从问题求解过程中逐步引出关键知识点,使读者知道该如何学,能够轻松、快速掌握Java语言的基本知识体系和编程技巧。
(3) 案例层次化。在章节进入时有导入案例,主要知识点有印证案例,模拟练习时有实训案例,所有案例均配有详细的代码解释和分析。导入案例→印证案例→实训案例,实践→理论→再实践,理论知识与实际应用紧密结合。
本书由朱庆生、古平、刘骥、葛亮、杨瑞龙编写。其中,朱庆生教授负责全书体系构思、框架制定、内容选择、编写指导等,并对全书各章进行了审查和修改;第3、4、5、10(部分)、11章由古平编写;第1、7、12、14章由葛亮编写;第10(部分)、13、15章和附录由刘骥编写;第2、6、8、9章由杨瑞龙编写。
书中难免有遗漏和不足之处,恳请业界同仁及读者朋友提出宝贵意见,以便在修订时进一步完善。
Java程序设计(第2版)编者
2011年1月
第一篇基础篇
第1章Java概述3
本章学习目标3
1.1认识Java语言3
1.1.1Java语言的特点4
1.1.2Java平台的体系结构4
1.2Java运行环境与开发环境5
1.2.1Java运行环境6
1.2.2安装6
1.2.3安装Eclipse开发工具6
1.3Java程序举例8
1.3.1用Eclipse编写第一个Java Application8
1.3.2用Eclipse编写带命令行参数的应用程序13
习题与思考15
第2章Java程序设计基础16
本章学习目标16
2.1标识符和关键字16
2.1.1如何定义标识符16
2.1.2关键字17
2.1.3注释17
2.2常量和变量18
2.2.1常量18
2.2.2变量18
2.3基本数据类型19
2.3.1布尔类型19
2.3.2字符类型20Java程序设计(第2版)目录2.3.3整数类型21
2.3.4浮点类型21
2.3.5各类型数据间的相互转换22
2.4运算符23
2.4.1算术运算符23
2.4.2赋值运算符25
2.4.3条件运算符26
2.4.4位运算符26
2.4.5关系运算符28
2.4.6逻辑运算符28
2.5表达式29
2.6程序控制语句30
2.6.1if语句30
2.6.2switch语句31
2.6.3while与dowhile语句33
2.6.4for语句34
2.6.5break语句36
2.6.6continue语句38
2.6.7return语句39
2.6.8实用案例40
2.7实训任务41
习题与思考42
第3章数组44
本章学习目标44
3.1数组使用初探44
3.2一维数组45
3.2.1定义数组45
3.2.2生成数组45
3.2.3初始化数组46
3.2.4访问数组46
3.2.5实用案例47
3.3二维数组47
3.3.1定义二维数组48
3.3.2二维数组元素的引用48
3.3.3实用案例49
3.4Arrays类50
3.4.1Arrays类及基本使用50
3.4.2实用案例52
3.5数组实训任务53
习题与思考54
第4章类和对象设计56
本章学习目标56
4.1面向对象基础56
4.2类和对象初探58
4.3定义类59
4.3.1定义成员变量59
4.3.2定义成员方法60
4.3.3方法重载61
4.4对象62
4.4.1实例化对象62
4.4.2初始化对象62
4.4.3使用对象64
4.4.4使用静态变量和方法66
4.4.5清除对象68
4.4.6应用程序与命令行参数68
4.4.7实用案例70
4.5包71
4.5.1包的定义71
4.5.2包的引入72
4.6类及成员修饰符73
4.6.1public73
4.6.2protected74
4.6.3private75
4.6.4final76
4.6.5实用案例77
4.7类和对象实训任务78
习题与思考83
第5章继承与多态84
本章学习目标84
5.1继承使用初探84
5.2类的继承85
5.2.1继承的实现85
5.2.2继承与重写87
5.2.3继承与类型转换90
5.2.4实用案例91
5.3多态性92
5.3.1多态性的概念92
5.3.2实用案例94
5.4抽象类与抽象方法95
5.4.1定义抽象类及实现抽象方法95
5.4.2实用案例95
5.5接口97
5.5.1接口定义97
5.5.2接口实现97
5.5.3实用案例99
5.6内部类100
5.6.1成员内部类101
5.6.2局部内部类101
5.6.3静态内部类(嵌套类)101
5.6.4匿名内部类102
5.6.5实用案例102
5.7Java类的高级特性104
5.7.1泛型104
5.7.2Java类加载机制107
5.7.3Java反射机制108
5.7.4实用案例114
5.7.5Java注解120
5.8继承与多态实训任务123
习题与思考125
第6章Java标准类库128
本章学习目标128
6.1Java标准类库简介128
6.2字符串String类和StringBuffer类129
6.2.1String类129
6.2.2StringBuffer类134
6.2.3正则表达式136
6.2.4实用案例139
6.3数据类型包装器类139
6.3.1整型包装器类140
6.3.2实用案例141
6.4System类和Runtime类142
6.4.1记录程序执行的时间142
6.4.2复制数组143
6.4.3内存管理143
6.4.4实用案例144
6.5Math类和Random类145
6.5.1Math类145
6.5.2Random类146
6.5.3实用案例147
6.6日期时间实用工具类148
6.6.1Date(日期)148
6.6.2Calendar(日历)149
6.6.3实用案例151
6.7Java集合类152
6.7.1集合接口152
6.7.2实现List接口的类154
6.7.3实现Set接口的类156
6.7.4通过迭代接口访问集合类158
6.7.5映射接口160
6.7.6实现Map接口的类162
6.8标准类实训任务165
习题与思考167
第二篇提高篇
第7章异常处理171
本章学习目标171
7.1为什么需要异常处理171
7.2异常概述174
7.2.1什么是异常174
7.2.2异常处理带来的好处175
7.3异常处理机制177
7.3.1Java的异常处理机制177
7.3.2异常类的类层次178
7.3.3异常的处理179
7.3.4实用案例182
7.4自定义异常类184
7.5异常处理实训任务186
习题与思考187
第8章输入输出处理188
本章学习目标188
8.1流的作用188
8.2流的划分189
8.3标准输入输出流191
8.3.1标准输入191
8.3.2Scanner类封装标准输入流192
8.3.3标准输出193
8.3.4实用案例193
8.4字节流使用194
8.4.1File类194
8.4.2文件字节流199
8.4.3字节过滤流201
8.4.4实用案例203
8.5字符流使用205
8.5.1文件字符流205
8.5.2字节流向字符流的转化206
8.5.3Scanner封装字符流208
8.5.4实用案例210
8.6串行化211
8.6.1串行化的概念211
8.6.2实用案例212
8.7输入输出处理实训任务213
习题与思考217
第9章Java多线程218
本章学习目标218
9.1为什么使用多线程218
9.2线程的概念219
9.3线程的创建220
9.3.1采用继承创建线程220
9.3.2通过实现接口创建线程222
9.3.3实用案例223
9.4线程的生命周期及调度224
9.4.1线程生命周期224
9.4.2线程调度和优先级226
9.4.3线程的终止227
9.4.4实用案例229
9.5多线程互斥与同步230
9.5.1线程的互斥230
9.5.2线程的同步234
9.5.3实用案例236
9.6多线程实训任务238
习题与思考242
第10章GUI程序设计244
本章学习目标244
10.1为什么学习GUI程序设计244
10.2基于Swing的简单界面设计245
10.2.1Swing简介245
10.2.2Swing的类层次结构246
10.2.3常见GUI组件247
10.2.4基于AWT的GUI程序249
10.3界面布局251
10.3.1无布局管理器布局251
10.3.2FlowLayout253
10.3.3BorderLayout254
10.3.4GridLayout255
10.3.5利用可视化工具进行布局256
10.3.6实用案例259
10.4响应用户事件261
10.4.1事件处理的基本过程261
10.4.2常用事件与事件监听器类263
10.4.3键盘与鼠标事件265
10.4.4实用案例268
10.5高级组件JTree和JTable270
10.5.1JTree组件270
10.5.2JTable组件274
10.5.3实用案例277
10.6GUI程序设计实训任务279
习题与思考285
第三篇网络篇
第11章网络通信289
本章学习目标289
11.1类URL与URLConnection289
11.2类InetAddress294
11.3Socket通信296
11.3.1基于TCP协议的Socket通信296
11.3.2实用案例298
11.3.3基于UDP的网络通信302
11.3.4实用案例303
11.3.5基于MulticastSocket实现多点广播306
11.4网络通信实训任务308
习题与思考309
第12章JSP与Servlet技术310
本章学习目标310
12.1为什么使用JSP310
12.2JSP技术312
12.2.1JSP工作原理312
12.2.2JSP的构成314
12.2.3JSP内建对象317
12.2.4实用案例322
12.3Servlet技术324
12.3.1Servlet介绍324
12.3.2Servlet常用接口的使用325
12.3.3使用HttpServlet处理客户端请求329
12.3.4获得Servlet初始化参数332
12.3.5实用案例334
12.4JSP和Servlet结合的方法336
12.4.1模式一: JSP+JavaBean336
12.4.2模式二: JSP+Servlet+JavaBean336
12.4.3JSP和Servlet的选择337
12.4.4实用案例337
12.5JSP与Servlet开发实训任务339
习题与思考342
第13章用Tomcat构建Web站点343
本章学习目标343
13.1Tomcat简介343
13.2安装配置Tomcat344
13.3编写简单的Web站点345
13.3.1配置服务器运行环境345
13.3.2新建动态Web工程346
13.3.3Web工程的结构347
13.3.4新建Servlet和JSP程序347
13.4运行Web站点351
13.5发布Web站点352
习题与思考353
第14章JDBC技术354
本章学习目标354
14.1为什么需要JDBC354
14.2数据库和常用的SQL语句356
14.3JDBC的结构358
14.4通过JDBC访问数据库359
14.4.1加载JDBC驱动程序359
14.4.2建立连接359
14.4.3执行SQL语句360
14.4.4检索结果360
14.4.5关闭连接361
14.4.6实用案例361
14.4.7事务处理365
14.4.8实用案例366
14.5JDBC实训任务370
习题与思考376
第四篇实例篇
第15章Java应用开发案例379
本章学习目标379
15.1基于Web的简单学生信息管理系统379
15.1.1程序的基本结构379
15.1.2数据库操作的实现381
15.1.3处理Web请求386
15.1.4Web页面388
15.2推箱子游戏398
15.2.1程序的基本结构398
15.2.2游戏地图设计398
15.2.3程序逻辑399
15.2.4绘制游戏界面404
15.2.5游戏窗体406
参考文献409