Java程序设计(第3版)

Java程序设计(第3版)"

作者:唐大仕
ISBN:9787512145269
定价:¥56
字数:千字
页数:
出版时间:2021.08.01
开本:
版次:3-1
装帧:
出版社:清华大学出版社
简介

本书详细介绍了Java程序设计的基本环境、概念、方法和应用。内容分为三个部分:第一部分介绍了Java语言基础,包括数据、控制结构、数组、类、包、对象、接口等;第二部分介绍了Java深入知识,包括参数传递、虚方法调用、异常处理、Lambda表达式、流式处理;第三部分是Java的应用,包括工具类与算法、线程、文件、Swing图形用户界面,以及Java在网络、多媒体、数据库等方面的应用。本书对Java8、Java11-Java17中的新内容也进行了介绍。

前言

在程序设计的教学中,选择一种适合的语言是十分重要的。比较多种程序设计语言,笔者认为Java具有如下突出的优点。

其一,Java是面向对象的语言,与现代面向对象的设计与分析的软件工程相一致,也是当前的主流程序设计语言之一。

其二,简单易学。其中的数据类型、数据运算、程序控制结构等基本概念对于任何语言都是一致的;而其语法比C++等语言更简单,更容易掌握。

其三,Java语言本身就支持一些高级特性,如自动垃圾回收、异常处理、多线程、并行计算等,这些特性使Java成为极优秀的语言之一。

此外,Java具有广泛的用途。Java具有跨平台的特点,在各种平台上都有应用,它还可以有效地进行数据库、多媒体及网络的程序设计。不仅如此,Java还可以编写桌面应用、手机应用及网络应用。

综上所述,Java是特别适合于程序设计学习的基础语言。

对于学习者而言,选择一本好的教材至关重要。笔者基于多年程序设计语言的教学经验,结合个人的软件开发实践,力图使本书突出以下特色。

(1)对Java语言的基础知识,包括数据类型、流程控制、类的封装与继承、多态、虚方法调用、传值调用等进行系统讲解,让学习者知其然,并知其所以然。

(2)对Java类库中的基本类,包括Math、字符串、集合,进行详细讲解,以利于学习者打下牢固的基础。

(3)对Java中的基本应用,包括I/O、文本界面、图形界面等,精选大量典型而实用的例子,力图使学习者触类旁通、举一反三。

(4)对一些高级应用,如数据库编程、网络编程、多媒体编程、多线程、并行计算等内容,介绍了其概念、原理,以利于学习者能了解Java的实际应用及最新发展。

(5)在讲解语言的同时,介绍它所采用的面向对象技术的基础理论、主要原则和思维方法,以及在编程中写好代码的一些技巧与经验。

(6)在讲解、举例时充分考虑到各个层次的需要,力求语言简洁,内容循序渐进。同时,考虑到部分读者的需要,本书提供了较多的习题。

本书在内容安排上,大致可以分为三部分:第一部分介绍了Java语言基础,包括数据、控制结构、数组、类、包、对象、接口等;第二部分介绍了Java深入知识,包括参数传递、虚方法调用、异常处理、工具类与算法;第三部分是Java的应用,包括线程、并行编程、流式文件、图形用户界面,以及Java在网络、多媒体、数据库等方面的应用。

本书历经了第1版、第1版修订本、第2版和本次的第3版,书中融合了多年的教学经验,同时也针对广大读者的反馈进行了改进。另外,本书对Java语言的新特性进行了介绍,如Java 5中的泛型、增强的for语句、装箱等,Java 7中增加的switch与字符串、自动尝试关闭资源、新字面常量、多重异常捕获,Java 8中增加的Lambda表达式、流式处理、函数式接口等,同时也将Java 9以上版本增加的语法特性融入到各章的示例中。

本书第3版在保持第2版整体框架的同时,在一些细节上进行了较多的修改。

(1)增加了一些新的知识:实用的线程工具类、NIO、异步、HttpClient、Record类型等。

(2)对涉及图形用户界面的程序,统一改成Swing实现,而不再使用较老的AWT组件、Applet等技术,也不再使用独立于Java SE的Java FX界面。

(3)在文字叙述上,使用更通行的名词术语,例题的讲解更详细,书中的代码重新进行了整理,使用更有意义的命名和更通行的代码风格。

(4)对新的工具(如IDEA、Eclipse、NetBeans等)进行了介绍,对实践中用得较多的技术(如JUnit、正则表达式、数据库等)也进行了更详细的介绍。

相信第3版在全面性、先进性、实用性方面比前几个版本做得更好一些。

本书的内容和组织方式适合作为高等学校各专业“计算机程序设计”课程的教材,或者作为计算机技术的培训教材,也可以作为Java认证考试(OCP/JP,即原来的SCJP)用书。

作者在中国大学MOOC平台上开设的慕课“Java程序设计”是国家精品在线开放课程,本书也可以作为慕课教材。慕课的网址是:https://www.icourse163.org/course/PKU-1001941004,可以扫描下面的二维码参加课程。

读者可以从作者的个人网站(http://www.dstang.com)下载与本书配套的源程序。如果需要电子教案也可直接与作者联系(dstang2000@263.net)。

书中存在的缺点和不足,恳请读者批评指正。

唐大仕2021年7月于北京大学

目录

第1章Java语言与面向对象的程序设计

11Java语言简介

111Java 语言的发展

112Java 三大平台

113Java语言的特点

114Java和C、C++比较

12面向对象程序设计

121面向对象概述

122对象、类与实体

123对象的状态与行为

124对象的关系

125面向对象的软件开发过程

习题

第2章简单的Java程序

21简单程序的书写

211HelloWorld程序

212Java程序的基本构成

22程序的编辑、编译与运行

221Java开发工具包JDK

222程序的编译与运行

223使用jar打包程序

23Java程序中的基本输入与输出

231字符界面的输入与输出

232图形界面的输入与输出

24Java集成开发环境

241文本编辑工具

242集成开发工具

243建构工具及代码混淆

习题

第3章数据运算、流程控制和数组

31数据类型、变量与常量

311数据类型

312标识符

313常量

314变量

315程序的注释

32运算符与表达式

321算术运算符

322关系运算符

323逻辑运算符

324位运算符

325赋值与强制类型转换

326条件运算符

327表达式及运算的优先级、结合性

33流程控制语句

331结构化程序设计的三种基本流程

332简单语句

333分支语句

334循环语句

335跳转语句

34数组

341一维数组

342多维数组

343数组与增强的for语句

344数组的复制

习题

第4章类、包和接口

41类、字段、方法

411定义类中的字段和方法

412构造方法与对象的创建

413使用对象

414方法的重载

415this的使用

42类的继承

421派生子类

422字段的继承、隐藏与添加

423方法的继承、覆盖与添加

424super的使用

425父类对象与子类对象的转换

43包

431package语句

432import语句

433编译和运行包中的类

434CLASSPATH变量

435模块

44访问控制符

441成员的访问控制符

442类的访问控制符

443setter与getter

444构造方法的隐藏

45非访问控制符

451static 

452final

453abstract

454其他修饰符

455一个应用模式——单例模式

46接口

461接口的概念

462定义接口

463实现接口

464对接口的引用

465Java 8对接口的扩展

47枚举

471枚举的基本用法

472枚举的深入用法

习题

第5章深入理解Java语言

51变量及其传递

511基本类型变量与引用型变量

512字段变量与局部变量

513变量的传递

514变量的返回

515不定长参数变量

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41对象的自动清除

542Systemgc()方法

543finalize()方法

55内部类与匿名类

551内部类

552方法中的局部类及匿名类

553匿名类

56Lambda表达式与函数式接口

561Lambda表达式的书写与使用

562函数式接口

563高阶函数

57注解与反射

571注解的定义与使用

572反射

习题

第6章异常处理

61异常处理

611异常的概念

612捕获和处理异常 

613应用举例

62创建用户自定义异常类

621自定义异常类

622重抛异常及异常链接

63异常与资源管理

631使用finally

632使用try with resource

64断言及程序的测试

641使用assert

642程序的测试及JUnit

习题

第7章工具类及常用算法

71Java语言基础类

711Java API

712Object类

713基本数据类型的包装类

714Math类

715System类

72字符串和日期

721String类

722StringBuilder类

723StringTokenizer类

724日期相关类

73集合类

731Collection API 

732Set接口及HashSet、TreeSet类

733List接口及ArrayList,LinkedList类

734栈与队列

735Map接口及HashMap,TreeMap类

74泛型及集合遍历

741泛型

742装箱与拆箱

743Iterator及Enumeration

744集合与增强的for语句

75排序与查找

751使用Arrays类

752使用Collections类

753编写排序程序

76遍试、迭代、递归及回溯

761遍试

762迭代

763递归

764回溯

习题

第8章线程

81线程的创建与运行

811Java中的线程

812创建线程对象

813多线程

814使用Timer类

815应用举例

82线程的控制与同步

821线程的状态与生命周期

822对线程的基本控制

823synchronized关键字

824线程间的同步控制

83线程的实用工具类

831线程安全的集合

832原子变量

833读写锁

834Executor与Future

835使用CountDownLatch

84流式操作及并行流

841使用流的基本方法

842流及操作的种类

习题

第9章流、文件及基于文本的应用

91流式输入与输出

911字节流与字符流

912节点流和处理流

913标准输入和标准输出

914文本文件及二进制文件应用示例

915对象序列化

92文件及

921文件与管理

922使用NIO2文件系统API

923文件输入与输出流

924RandomAccessFile类

93基于文本的应用

931Java Application命令行参数

932环境参数

933处理Deprecated的API

94正则表达式 

941正则表达式的基本元素

942Pattern及Matcher

95XML处理 

951XML的基本概念

952XML编程

习题

第10章图形用户界面

101界面组件 

1011图形用户界面概述

1012界面组件分类

1013Component的方法

102布局管理

1021FlowLayout

1022BorderLayout

1023GridLayout

1024通过嵌套来设定复杂的布局

1025其他布局管理

103事件处理

1031事件及事件监听器

1032事件监听器的注册

1033事件适配器

1034内部类及匿名类在事件处理中的应用

104常用组件的使用

1041标签、按钮与动作事件

1042文本框、文本区域与文本事件

1043单选按钮、复选按钮,列表与选择事件

1044调整事件与滚动条

1045鼠标、键盘事件

1046JFrame与窗口事件

1047JPanel与容器事件

1048组件事件、焦点事件与对话框

105绘图、图像和动画

1051绘制图形

1052显示文字

1053显示图像及实现动画

106基于GUI的应用程序

1061使用可视化设计工具

1062菜单的定义与使用

1063菜单、工具条及对话框的应用

习题

第11章网络、多媒体和数据库编程

111Java网络编程

1111使用URL

1112用Java实现底层网络通信

1113实现多线程服务器程序

1114与Email服务器通信

1115使用HttpClient

112多媒体编程

1121Java图像编程

1122Java播放声音

1123Java Media API简介

113Java数据库编程

1131Java访问数据库的基本步骤

1132使用JTable显示数据表

114Java EE及Java ME简介

1141Java EE简介

1142Java ME简介

习题

附录AJava语言各版本增加的重要特性

参考文献

作者简介

编辑推荐

本书内容充实,层次清晰,用丰富的实例进行讲解,由浅入深地引导读者学习和掌握相关知识点。

作者寄语

唐大仕,博士,北京大学信息科学技术学院教师,获北京大学教学成果一等奖。开设的慕课“Java程序设计”“C#程序设计”是国家精品在线开放课程,慕课“动态几何画板Geogebra教学应用”获评为中国大学最美慕课。出版的教材包括《C#程序设计教程》《Visual C++.NET程序设计》《Visual Basic程序设计》《Python程序设计》《Java程序设计》

电子资料

www.luweidong.cn

下一个