
本书主要内容包括Java SE基础语法,面向对象的核心思想(封装、继承、多态),异常处理和断言机制,I/O,文件操作,多线程编程,网络编程,图形界面编程,反射机制,JDBC等内容。
本书涵盖了Java SE所有的知识点,从Java的基础语法到面向对象的设计思想,到具体Java项目的设计和编码,讲解由浅入深,覆盖全面,既有理论知识的深入剖析,又有实际应用的举例说明,能够带领读者完全掌握书中所讲知识在现实中的应用。
通过学习本教材及本系列其他教程,能够学习Java的各大应用领域核心技术,全面并系统地理解Java,使读者能够对Java领域的应用由陌生到熟悉,进而精通,达到满足企业要求的水平。
本书可作为高等院校、示范性软件学院、高职高专院校的计算机相关课程和软件工程专业的教材,也可作为各大软件培训机构的培训教程,同时也可供从事软件开发及测试工作的人员,以及对软件测试有兴趣的读者参考与学习。
序
面向对象程序设计(OOP)方法,以对象为基础,以消息驱动对象间的交互,从而实现“抽象对象”对虚拟世界的改造(即问题解决)。由于其设计思想与现实世界距离非常近,使面向对象程序设计语言备受欢迎。就面向对象程序设计语言的教学而言,不少老师一直纠结于“知识的传授”与“思想的传授”的关系问题上,即应该更重视语法本身?还是更重视思想?或是两者兼而并重?教师对这一问题的解决方式会直接体现在教学效果上。可见,无论是编写教材还是课堂教学,从根本内容上的定位和思考是很重要的。古人所云“授人以鱼”与“授人以渔”也是基于定位和思考而言的。
写一本好的面向对象程序设计语言教程,也是我——一个多年在一线从事教学工作的老师的渴望。无奈总是提笔见拙,每每不得满意,故一再搁置。曾经花费很长时间,与几位C++爱好者共同执笔,写了几百页的教材,因未尽期望,所以未付诸于铅字。所谓期望,一来希望能为读者真正提供有用的信息和快速掌握OOP设计思想的方法。二来希望书能在时间和空间中有久远或广泛的流传。
在河北师范大学软件学院工作的日子里,我认识了一群有志于教学和技术进步的年轻人。孟双英、刘海燕、赵洋就是其中的3位。他们一直致力于研究面向对象程序设计思想和Java语言,有丰富的项目经验和教学经验。这几位老师撰写的《Java SE与面向对象程序设计》一书,其优点体现在两个方面上: 其一在于定位,它定位于让学生入门,进入到Java SE编程的殿堂,通过阅读全书,我认为这个目的是能达到的;其二在于教学经验的总结,这样的内容安排、这样的组织结构、这样的知识深度、这样的阐述方式都是实践中检验了的。尽管这样的经验从不同角度看,有这样或那样的瑕疵;但事实上,无论我们自认为有多高明,也无法否定一个被实践多次检验了的经验或真理。
正因为如此,我又重新燃起了出版C++课程教材的想法。感谢这3位年轻人,他们帮助我重新认识了“适合的就是有用的”。谨希望这本来自于实践的书,对读者有用。
李文斌2014年2月
本系列教程为“河北师范大学软件学院Java教研室”通过长期Java项目实践及5年实际教学经验的不断积累,多次讨论、修改、精心设计后,形成的一套成熟可行的Java课程体系,从中提取精华形成了Java应用开发的系列教材。其中包括Java SE与面向对象设计思想,Java EE企业应用开发核心技术(Servlet规范、JSP规范),Android手机应用开发3方面内容,其中《Java SE与面向对象编程》是该系列教材中的基础和核心。
本书主要内容包括Java SE基础语法,面向对象的核心思想(封装、继承、多态),异常处理和断言机制,I/O,文件操作,多线程编程,网络编程,图形界面编程,反射机制,JDBC等。
本书涵盖了Java SE所有的知识点,从Java的基础语法到面向对象的设计思想,到具体Java项目的设计和编码,讲解由浅入深,覆盖全面,既有理论知识的深入剖析,又有实际应用的举例说明,能够带领读者完全掌握书中所讲知识在现实中的应用。
本书的一大特色是理论、实践并存,讲练结合。讲解配备同步训练或上机训练,可让读者进一步巩固、加深和拓展知识。
目前Java相关书籍中讲语法的居多,本教材是结合教师最真实的上课授课情况总结而来的,所以更注重的是使初学者学习循序渐进,有理论学习,也有实践练习,能够轻松合理安排理论和实践课程时间,体现理论和实践的完美结合。
通过学习本教材及本系列其他教程,能够学习Java的各大应用领域核心技术,全面并系统地理解Java,使读者对Java领域的应用由陌生到熟悉,进而精通,达到满足企业需求的水平。
编者2014年2月
基础篇第1章Java概述3
1.1Java的历史3
1.2Java语言的特点4
1.3Java平台和主要应用方向5
1.4Java开发环境的搭建6
1.4.1JVM6
1.4.2JRE与JDK6
1.4.3JVM、JRE和JDK的关系7
1.4.4JDK的下载和安装7
1.5Java程序的基本结构13
1.6Java注释14
1.7Java JDK版本的更替15
1.8练习15第2章Java基础16
2.1标识符和关键字16
2.1.1标识符16
2.1.2关键字16
2.2数据类型17
2.2.1基本数据类型17
2.2.2引用数据类型18
2.2.3基本数据类型的类型转换19
2.3运算符和表达式22
2.3.1算数运算符和算数表达式22
2.3.2关系运算和条件运算23
2.3.3逻辑运算和位运算25
2.3.4赋值运算符28
2.4流程控制28
2.4.1流程控制概述28
2.4.2条件分支28
2.4.3循环控制32
2.4.4无条件分支36
2.5练习38第3章数组41
3.1数组概述41
3.2一维数组41
3.2.1数组的声明41
3.2.2数组初始化42
3.2.3数组元素的访问43
3.2.4数组复制44
3.3Arrays类45
3.4二维数组48
3.4.1二维数组的定义和初始化48
3.4.2Java中二维数组的实质50
3.4.3二维数组应用举例50
3.5练习52第4章类和对象54
4.1类与对象概述54
4.1.1为什么需要类54
4.1.2类的定义55
4.1.3实例化对象55
4.1.4访问对象中的成员变量56
4.1.5对象的引用性质57
4.2类的成员方法58
4.2.1成员方法的定义和使用58
4.2.2方法的参数传递61
4.2.3方法的重载63
4.3构造方法64
4.4垃圾回收机制67
4.5包的使用69
4.5.1为什么需要包69
4.5.2访问包中的类70
4.6练习73第5章类的封装75
5.1封装的基本概念75
5.2封装的实现77
5.3类的特殊成员79
5.4练习81第6章类的继承83
6.1继承的基本概念83
6.1.1继承的实现84
6.1.2继承的本质84
6.2继承带来的方法重写87
6.2.1方法重写的原则87
6.2.2方法重写的意义89
6.2.3方法的重写与重载的比较90
6.3抽象类与接口91
6.3.1抽象类的继承91
6.3.2抽象类的意义93
6.3.3接口93
6.4Object类95
6.5练习101第7章多态103
7.1多态的基本概念103
7.2多态的应用107
7.2.1引用变量的转型107
7.2.2接口回调110
7.2.3动态绑定111
7.3多态性总结112
7.4练习114第8章包装器类116
8.1包装器类型116
8.2自动装箱117
8.3练习122第9章内部类123
9.1内部类的基本使用123
9.2局部方法内部类127
9.3匿名内部类128
9.4静态嵌套类(静态内部类或者嵌套类)130
9.5练习131第10章枚举133
10.1枚举的基本使用133
10.2练习136第11章异常和断言137
11.1异常137
11.1.1JDK中异常的层次结构137
11.1.2异常的分类137
11.2Java异常处理机制139
11.2.1捕获异常139
11.2.2声明(传播)异常141
11.3自定义异常类143
11.4断言145
11.5练习147第12章容器和泛型149
12.1Java中容器的分类149
12.2集合类型150
12.2.1Set150
12.2.2List155
12.2.3Queue156
12.3Map类型160
12.4迭代器(Iterator)162
12.5Collections工具类163
12.6泛型169
12.7练习172第13章流与文件173
13.1文件处理173
13.2I/O和流176
13.3字节流177
13.3.1InputStream178
13.3.2OutputStream178
13.3.3FilterInputStream和FilterOutputStream179
13.3.4字节文件处理(FileInputStream和FileOutputStream)180
13.4字符流181
13.4.1Reader182
13.4.2Writer182
13.4.3字符文件的处理(FileReader和FileWriter)183
13.5对象流183
13.5.1对象的序列化和反序列化183
13.5.2ObjectInputStream和ObjectOutputStream184
13.5.3对象序列化的控制187
13.6其他常用流190
13.7练习192第14章字符串解析、日期格式化195
14.1字符串195
14.1.1String195
14.1.2StringBuffer201
14.1.3StringTokenizer203
14.1.4Scanner扫描输入205
14.2日期、日期的格式化以及字符串的解析206
14.2.1Date206
14.2.2Calendar207
14.2.3日期的格式化和解析210
14.3练习214第15章线程和多线程216
15.1线程简介216
15.1.1程序、进程、线程216
15.1.2线程的生命周期217
15.2Java中创建多线程218
15.2.1定义任务218
15.2.2线程中常用的方法222
15.2.3线程的优先级226
15.3多线程的同步和死锁227
15.3.1多线程同步228
15.3.2多线程的死锁问题233
15.3.3Daemon线程235
15.4练习235第16章网络编程237
16.1网络编程基础237
16.1.1TCP/IP基本概念237
16.1.2URL及应用238
16.2基于套接字的Java网络编程238
16.2.1Socket通信238
16.2.2Socket通信的过程239
16.2.3Socket基于TCP协议的网络编程241
16.2.4Socket基于UDP协议的网络编程246
16.3练习248第17章图形界面编程249
17.1Java GUI编程简介249
17.2AWT图形界面编程250
17.2.1AWT中的容器组件250
17.2.2布局管理器253
17.2.3AWT中的事件处理258
17.2.4AWT中的其他组件261
17.3Swing组件266
17.4Java中的AWT绘图269
17.5练习273扩展篇第18章反射277
18.1Java反射机制的基本原理277
18.2Java反射机制的应用280第19章javac、java命令的使用287
19.1JDK环境配置中的环境变量287
19.2javac命令287
19.3java命令288第20章JDBC数据库连接技术293
20.1JDBC的概念和类型293
20.2JDBC中主要的类和接口295
20.3用JDBC进行数据库操作298
20.4数据库连接池技术303附录AJavaBeans命名规则308附录BEclipse的安装和使用310参考文献315