本书从程序设计的角度来介绍Java语言,阐述如何应用Java语言设计出有Java特色的应用程序。全书共分三篇,*篇为Java基础,介绍Java的开发环境、程序开发过程、基本的语法、语句,重点介绍应用Java语言进行简单Java程序的开发过程,强调程序的设计过程和调试过程;第二篇为Java面向对象程序设计,介绍应用Java语言的类、对象、接口来设计面向对象的Java程序,通过一个个实例展示什么是面向对象程序设计,如何设计有Java特色的面向对象程序,并给出了有Java语言特色的简单框架程序;第三篇为Java应用开发,给出了多个Java应用实例,这些实例采用层层推进、模块组合的方式,从简单的功能开始,逐步增加内容,*后完成一个有一定规模且实用的基于网络的学生成绩查询管理系统。
本书内容浅显易懂,按照问题来组织内容,每章解决一个问题,围绕这个问题来设计程序,讲解所用到的相关知识,让读者通过实例学习Java程序设计,逐步培养Java程序设计思路。本书既可以作为高等学校学生学习Java程序设计的教材,也可以作为自学Java语言读者的参考书。
1. 突出程序设计的学习。本书重点是应用Java语言进行程序设计。本书精选大量的实例程序,通过具体程序来学习Java语言。书中结合实例介绍常见的Java语法和基础知识,屏蔽掉不常用的语法,重点放在应用这些知识点来设计程序上。2. 强调实践能力培养。Java语言实践能力包括两个方面,一是编写程序能力,二是调试程序能力。本书按照学习习惯进行组织,首先从问题出发给出示例程序和结果;然后在学习示例程序基础上指导学习者完成一个类似的训练程序;完成训练程序后学习者可以自己完成实做程序,检验学习效果,如果遇到问题可以再回过头来仔细研读示例程序和训练程序。本书突出程序调试能力的培养,给出每个程序的编译过程和运行结果,讲解常见的错误和处理方法,希望学习者能够逐步学会修改程序中错误,得到正确结果,学会调试程序。3. 重点学习面向对象程序设计。本书给出的实例突出面向对象的封装、继承和多态特征,强调Java语言特色,让学习者学到有面向对象味道的程序,如框架实例。4. 注重学习过程的深入浅出。本书实例简单易学,从*基本的实例开始,不断改进和完善,*后形成更为完整和复杂的程序,易于学习和模仿。在介绍实例程序的同时,讲解程序的实现机理并进行深入探讨,方便学习者从根本上理解程序。5. 关注编程规范。一个优秀的程序员写出的程序不仅能够运行,还应该符合规范。因此本书强调编写程序的规范性,书中的实例程序也是按照规范编写,方便学习者养成良好的程序设计习惯。6. 本教材为教育部产学合作协同育人项目Java程序设计指定教材,项目的MOOC网址:http://mooc.ncist.edu.cn/。
前言
本书从程序设计的角度介绍如何应用Java语言编写程序,全书共计25章,每一章都按照问题的解决过程进行组织,重点讲述程序设计的过程。本书不是系统地介绍Java语言的语法和知识点,而是重点讲解设计程序中最常用的语法和知识点。本书的重点是使读者学会如何应用Java语言来设计程序,而非Java语言本身。在学习Java语言的过程中,经常会遇到下面三个问题: 第一个问题是怎样能够自己独立编写Java程序并得到运行结果?第二个问题是如何编写出有别于其他语言的具有Java自身特点的程序?第三个问题是如何编写出有一定规模的Java程序?第一个问题是学习各种语言都会遇到的问题,学习者能够学会语言的语法和知识,但是不知道怎样编写程序,也不知道如何修改程序中的错误以得到正确的运行结果。本书的第一部分重点介绍设计程序的过程,包括程序的编写、编译和运行过程以及常见错误的分析和修改,让学习者不断地编写程序、编译程序、运行程序,最后能够独立完成程序的编写与调试。因此本书第一篇在内容安排上重点介绍如何设计程序,给出程序的运行过程,列出常见问题,让学习者可以逐步学会独立完成程序,通过看到自己程序的正确结果逐步培养学习Java语言的兴趣和自信心。第二个问题更加重要,多数学校都是先开设C语言课程,再开设Java课程,因此在学习Java的时候很容易产生一个错觉,觉得Java语法和C语言很像,二者应该差不多。但实际上两者差别很大,C语言是从处理流程来组织程序,而Java语言是从对象角度组织程序。C语言的核心和精华是函数和指针,Java语言的核心是封装、继承和多态。学习Java语言的基础是类,主要是如何组织一个类,处理流程只是类内方法的任务。因此本书第二篇从对象的角度来组织实例,从基础知识程序平滑地过渡到类的设计,并带领学习者逐步学习面向对象编程的思想,最后能够设计出有面向对象味道和特色的程序,例如框架程序。第三个问题也很重要,实际的软件项目的规模都非常大,几十万行程序很常见,简单演示程序与大程序之间在组织、设计和实现上都有很大区别。因此需要在学习Java语言时,能够尝试编一些大一点的程序,逐步了解和掌握如何开发有一定规模的程序。本书第三部分设计了多个实例,这些实例相互关联,逐步深入,经过不断扩充和完善,最后形成一个比较大的程序。另外本书还强调程序设计的规范,要求学习者不仅能够写出可以运行的程序,还应让程序代码符合规范。〖1〗Java基础与应用前言[3]〖3〗本书内容上组织成三篇。第一篇是Java基础,包括第1~6章,从设计一个最简单的Java程序开始,学习Java程序的编辑、编译和运行过程;学习Java语言的基本语法,包括类型、变量、表达式;学习Java语言的基本语句,分支结构和循环结构;学习Java语言的数组;学习如何设计Java方法,进行方法提取。第二篇是面向对象程序设计,包括第6~20章,讲解Java语言中类的定义和组成;对象实例化过程;类的封装和Java类的构成;类的组合关系和类的继承关系;继承的实现方法;类的静态属性和静态方法;对象多态的实现;抽象类和接口的定义与应用,最后给出一个体现面向对象特色的框架程序实例。第三篇是Java应用开发,包括第21~25章,学习如何应用Java语言来开发规模更大的程序,从学生成绩排序开始讲起,介绍基本的排序方法和应用集合类提供的排序方法实现排序;接下来介绍如何保存学生的信息,分别实现了保存到文件和数据库两种方法,并实现了对存储后的数据的读取和修改;为了更直观地查看学生信息和成绩,进一步提供了图形界面的学生成绩管理;最后提供了基于网络应用的客户机/服务器结构的学生成绩管理,并改进为多线程的学生成绩查询,这5章的内容既相互独立,又相互关联,层层推进,最后形成一个具有一定实用性的学生成绩管理系统。本书前20章按照同一个模式组织,各章分为示例程序、相关知识、训练程序、拓展知识和实做程序五个部分。示例程序从提出问题开始,给出解决问题的程序和运行结果。接下来在相关知识中介绍本章用到的Java语法和知识点。在此基础上给出一个相似的问题,参考示例程序进行分析,设计出程序。随后给出的拓展知识是提高部分,适合想深入学习Java程序设计的读者,主要是对Java语言的实现机理和相关内容的深入探讨,读者也可以跳过这一节。最后给出实做程序,让读者在学习本章内容的基础上进行实际程序设计练习,检验自己的学习情况。后5章主要是从软件开发的角度进行介绍,并给出了一些程序的拓展点,读者可以在理解程序的基础上进行拓展,完善程序功能。本书的全部程序都已在JDK1.6环境下编译通过,每一章的示例程序、训练程序、相关知识和拓展知识中的程序段都有对应的实例。本书讲解的大量实例是逐步改进的,每一次改进的程序分别放在不同的章节目录下,实做程序都给出了参考实现,所有程序都已经编译通过并运行正确。本书为任课教师提供配套的教学资源,包括电子教案、本书用到的软件、实例程序和参考实做程序。需要的读者可以从出版社网站www.tup.com.cn下载。另外本书作者提供了一个QQ群: 275116341,欢迎使用教材的教师加入,一起探讨教材及相关问题。本书第1~10章由郭慧编写,第11~20章由王养廷编写,第21~25章由李永飞编写,全书由王养廷负责统稿。对本书的不足和错误之处,恳请读者批评和指正。
作者2017年1月
目录
第一篇Java基础
第1章第一个Java程序/3
1.1示例程序3
1.1.1HelloWorld程序3
1.1.2HelloWorld程序
分析4
1.2相关知识4
1.2.1下载安装工具包5
1.2.2配置5
1.2.3编辑程序7
1.2.4编译运行程序7
1.3训练程序8
1.3.1程序分析8
1.3.2参考程序8
1.3.3程序调试9
1.4拓展知识10
1.4.1开发工具10
1.4.2Java API文档10
1.4.3编码规范11
1.5实做程序12
第2章显示学生成绩/14
2.1示例程序14
2.1.1显示学生信息14
2.1.2引入变量15
2.1.3增加注释15
2.2相关知识17
2.2.1标识符和关键字17
2.2.2数据类型和变量17
2.2.3运算符和表达式19
2.3训练程序21
2.3.1程序分析21
2.3.2参考程序21
2.4拓展知识23
2.4.1Java虚拟机23
2.4.2变量存储23
2.4.3变量类型转换24
2.5实做程序24
第3章学生成绩分级/27
3.1示例程序27
3.1.1显示考试结果27
3.1.2输入学生成绩28
3.2相关知识30
3.2.1基本语句30
3.2.2条件分支语句31
3.2.3多分支语句32
3.3训练程序32
3.3.1程序分析33
3.3.2参考程序33
3.4拓展知识34
3.4.1分支语句讨论34
3.4.2数据合法性检查35
3.5实做程序37
第4章计算平均成绩/40
4.1示例程序40
4.1.1计算平均成绩40
4.1.2引入常量41
4.1.3未知人数42
4.2相关知识45
4.2.1for循环语句45
4.2.2while循环语句45
4.3训练程序46
4.3.1程序分析46
4.3.2参考程序46
4.4拓展知识47
4.4.1循环语句讨论47
4.4.2循环边界检查48
4.5实做程序49
第5章显示班级成绩单/53
5.1示例程序53
5.1.1班级平均成绩53
5.1.2显示最高成绩54
5.2相关知识56
5.2.1一维数组56
5.2.2多维数组56
5.3训练程序57
5.3.1程序分析57
5.3.2参考程序57
5.4拓展知识58
5.4.1数组讨论58
5.4.2数组的存储59
5.5实做程序60
第6章显示学生基本信息/62
6.1示例程序62
6.1.1程序实现62
6.1.2处理部分提取63
6.1.3读入部分提取64
6.2相关知识65
6.2.1Java方法65
6.2.2参数传递66
6.3训练程序67
6.3.1程序分析68
6.3.2参考程序68
6.4拓展知识69
6.4.1方法重构69
6.4.2方法存储69
6.5实做程序69
〖1〗Java基础与应用目录[3]〖3〗第二篇面向对象程序设计
第7章简单Student类/73
7.1示例程序73
7.1.1显示学生信息73
7.1.2增加测试类75
7.2相关知识76
7.2.1Java类定义76
7.2.2类的方法77
7.3训练程序78
7.3.1程序分析78
7.3.2参考程序78
7.4拓展知识79
7.4.1为什么引入类79
7.4.2变量作用域80
7.5实做程序81
第8章Student类对象/82
8.1示例程序82
8.1.1访问控制权限82
8.1.2添加构造方法83
8.2相关知识85
8.2.1构造方法85
8.2.2访问权限控制86
8.2.3类的组成部分87
8.3训练程序88
8.3.1程序分析88
8.3.2参考程序88
8.4拓展知识89
8.4.1对象存储89
8.4.2对象相等91
8.5实做程序92
第9章完善Student类/94
9.1示例程序94
9.1.1添加置取方法94
9.1.2增加构造方法96
9.1.3完整的Student类97
9.2相关知识99
9.2.1置取方法99
9.2.2对象this101
9.3训练程序102
9.3.1程序分析103
9.3.2参考程序103
9.4拓展知识105
9.4.1类的封装105
9.4.2置取方法讨论106
9.4.3参数传递深入
讨论106
9.5实做程序108
第10章Student类组合/111
10.1示例程序111
10.1.1MobilePhone类
111
10.1.2增加机主属性113
10.2相关知识115
10.2.1对象属性115
10.2.2类的组合关系116
10.3训练程序117
10.3.1程序分析117
10.3.2参考程序117
10.4拓展知识119
10.4.1组合讨论119
10.4.2组合与封装120
10.5实做程序124
第11章Student类方法重载/125
11.1示例程序125
11.1.1构造方法重载125
11.1.2普通方法重载126
11.2相关知识128
11.3训练程序129
11.3.1程序分析129
11.3.2参考程序129
11.4拓展知识131
11.5实做程序132
第12章Student类实例
计数/13412.1示例程序134
12.1.1显示实例顺序134
12.1.2获得学生对象
个数135
12.2相关知识137
12.2.1静态属性与实例
属性137
12.2.2再论对象创建
过程138
12.3训练程序139
12.3.1程序分析139
12.3.2参考程序139
12.4拓展知识140
12.4.1属性与局部
变量140
12.4.2静态属性与方法
存储141
12.4.3单个实例142
12.5实做程序143
第13章泛化类Person/145
13.1示例程序145
13.1.1泛化类Person145
13.1.2子类Student146
13.1.3Student对象
初始化147
13.2相关知识148
13.2.1类的继承148
13.2.2super对象149
13.3训练程序150
13.3.1程序分析150
13.3.2参考程序150
13.4拓展知识151
13.4.1调用构造方法151
13.4.2继承与组合153
13.5实做程序155
第14章对象多态/157
14.1示例程序157
14.1.1重写display
方法157
14.1.2向上转型159
14.2相关知识160
14.2.1方法重写160
14.2.2对象上转型161
14.3训练程序162
14.3.1程序分析163
14.3.2参考程序163
14.4拓展知识165
14.4.1动态绑定165
14.4.2多态讨论166
14.5实做程序168
第15章抽象类/169
15.1示例程序169
15.1.1方法抽象169
15.1.2抽象方法display
169
15.2相关知识171
15.2.1抽象类定义171
15.2.2抽象类说明172
15.3训练程序172
15.3.1程序分析173
15.3.2参考程序173
15.4拓展知识175
15.5实做程序176
第16章接口设计/177
16.1示例程序177
16.1.1定义接口MoveAble
177
16.1.2应用MoveAble
实现多态179
16.2相关知识180
16.2.1接口定义180
16.2.2接口与抽象类
比较182
16.3训练程序184
16.3.1程序分析185
16.3.2参考程序185
16.4拓展知识187
16.4.1接口讨论187
16.4.2接口应用188
16.5实做程序189
第17章异常处理/191
17.1示例程序191
17.1.1程序异常实例191
17.1.2受检异常193
17.2相关知识194
17.2.1异常处理结构194
17.2.2常见异常类195
17.3训练程序196
17.3.1程序分析196
17.3.2参考程序196
17.4拓展知识198
17.4.1异常处理讨论198
17.4.2防御性编程199
17.5实做程序202
第18章包结构设计/204
18.1示例程序204
18.1.1按包组织程序204
18.1.2导入手机类206
18.2相关知识208
18.2.1包定义208
18.2.2其他包中类的
引用209
18.3训练程序210
18.3.1程序分析210
18.3.2参考程序210
18.4拓展知识212
18.4.1Java基础类
库包212
18.4.2包的设计213
18.5实做程序214
第19章简单框架设计/215
19.1示例程序215
19.1.1简单框架215
19.1.2增加功能218
19.2相关知识219
19.2.1多态与框架219
19.2.2依赖关系220
19.3训练程序220
19.3.1程序分析221
19.3.2参考程序221
19.4拓展知识224
19.4.1框架设计224
19.4.2框架设计讨论225
19.5实做程序226
第20章带配置文件的框架/228
20.1示例程序228
20.1.1装入Person类228
20.1.2显示名字230
20.2相关知识232
20.2.1反射机制232
20.2.2反射机制应用233
20.3训练程序233
20.3.1程序分析233
20.3.2参考程序234
20.4拓展知识237
20.4.1反射机制讨论237
20.4.2配置文件238
20.5实做程序238
第三篇Java应用开发
第21章学生成绩排序输出/243
21.1开发任务243
21.2程序实现及分析244
21.2.1数组排序244
21.2.2List排序248
21.2.3List自动排序252
21.2.4通用输出256
21.3集合相关类库262
21.3.1Collection与
Collections263
21.3.2List与ArrayList
264
21.3.3Map与HashMap
265
21.3.4Set与TreeSet266
21.4实做程序268
第22章学生信息保存/270
22.1开发任务270
22.2程序实现及分析270
22.2.1文件保存功能271
22.2.2数据库保存
功能275
22.2.3重构程序结构280
22.3文件操作相关类库281
22.3.1I/O流281
22.3.2I/O操作步骤283
22.4数据库操作286
22.4.1数据库操作
概述286
22.4.2数据库操作
步骤288
22.5实做程序290
第23章图形界面成绩管理/292
23.1开发任务292
23.2程序实现及分析294
23.2.1图形用户界面294
23.2.2成绩管理功能298
23.3图形界面基础类库311
23.3.1Java图形界面311
23.3.2组件类313
23.3.3事件类与接口316
23.4实做程序317
第24章网上学生成绩查询/318
24.1开发任务318
24.2程序实现及分析319
24.2.1简单网络通信
功能319
24.2.2网络查询323
24.3网络编程相关类库329
24.3.1Socket编程概念
329
24.3.2Socket相关类330
24.4实做程序331
第25章多用户查询学生成绩/333
25.1开发任务333
25.2程序实现及分析334
25.2.1简单多线程
程序一334
25.2.2简单多线程
程序二336
25.2.3多线程网络
查询339
25.3多线程相关类库350
25.4实做程序352
附录A安装配置数据库环境/353
附录B推荐书目/360