Absolute Java中文版
  • 推荐1
  • 收藏2
  • 浏览1.4K

Absolute Java中文版

Walter Savitch, Kenrick Mock (作者)  师蓉 (译者)

  • 书  号:978-7-121-32866-4
  • 出版日期:2017-12-20
  • 页  数:1028
  • 开  本:16(203*280)
  • 出版状态:上市销售
  • 原书名: Absolute Java
  • 原书号:9780134041674
  • 维护人:张春雨
纸质版 ¥268.00
本书侧重于面向对象设计,通过浅显易懂的语言和代码,很好地平衡了完整实例和解释性讨论,并围绕着Java 语言的特性全面透彻地介绍诸多编程技术。书中全面介绍了Java 语言已经实现的封装、继承和多态性技术,并在介绍Swing GUI 的时候提及了事件驱动的编程,在介绍UML 和模式的同时进一步介绍了OOP。本书每节后都设计了相应的练习题,每章后都有针对本章内容的编程项目。
本书不仅适合初学者使用,还可以作为使用Java 的后续计算机科学课程的参考书。
OOP入门必由之路 常青藤名校内定用书 以干货著称的经久名著 为解惑Java疑难而定制
译者序
20 世纪90 年代,硬件领域出现了单片式计算机系统,这种价格低廉的系统一出现就立即引起了自动控制领域人员的注意,因为使用它可以大幅度提升消费类电子产品(如电视机顶盒、面包烤箱、移动电话等)的智能化程度。Sun 公司为了抢占市场先机,在1991 年成立了一个被称为Green 的项目小组,由James Gosling 等工程师开发出Java语言的雏形,其最初被命名为Oak,于1995 年5 月以Java 这个名称正式发布。
作为一种计算机编程语言,Java 拥有跨平台、面向对象、泛型编程的特性,其广泛应用于企业级Web 应用开发和移动应用开发中。伴随着互联网的迅猛发展,Java 逐渐成为重要的网络编程语言。
本书作者通过浅显易懂的语言和大量的示例代码,力求让读者理解Java 语言。本书的每一章都有作者特意编写的“自测题”,让读者可以自己检验是否真的理解了这些内容。并且在每一章的最后都提供了本章小结、自测题答案和编程项目练习,供读者巩固本章所学的相关内容。
本书共分为20 章,作者在前3 章介绍了Java 语言的基本语法;并从第4 章开始进入“面向对象编程”部分。作者在第4 章和第5 章介绍了类的相关知识;在第7 章和第8 章介绍了Java 面向对象的三大特征,即继承、封装和多态;在第13 章概述了接口和内部类的相关内容。此外,作者还在书中介绍了数组、链表等数据结构和递归算法,分别位于第6 章、第11 章、第14 章、第15 章和第16 章;然后,作者在第17 章和第18 章介绍了如何使用JavaFX 创建GUI。而且,作者还在本书中介绍了I/O、异常处理的相关内容,分别位于第9 章和第10 章。作者还在第12 章介绍了UML 和模式的相关内容。最后,为了适应互联网的迅猛发展和多核化的趋势,作者在第19 章和第20 章概述了相关内容。
虽然我已经尽了最大努力,但翻译过程中难免有些未准确理解的句子,希望广大读者批评指正。
除师蓉外,李青翠、樊永刚、樊旺斌、王桂英、樊瑞春、武昭江、李静、翟晓锦、师超、成金娥、师守伟、石璐璐、赵鹏飞、武建萍、武育芝、郝俊丽、张烈香、韩丽飞、樊卫斌、武继萍、周俊燕、沈元婷、王莹莹、韩师乾也共同参与了本书的翻译工作,感谢他们对本书做出的贡献。
最后,感谢电子工业出版社对我的信任和帮助,感谢家人对我的支持。
师蓉
2017 年11 月

前言
本书旨在成为Java 编程方面的一本教科书和参考书。尽管本书包含了很多编程技术,但它是围绕着Java 语言的特征而非围绕着某门特定的编程技术课程来组织内容的。我在编写本书时,脑海中考虑的主要读者对象是没有太多Java 编程经验的本科生。因此,本书可以作为你学习第一门编程课程或者使用Java 后续计算机科学课程时的Java 教材或参考书。本书的目标是适用于大多数用户。前几章适合初学者,同时这些章节方框中的内容可以让较有经验的程序员快速了解基本的Java 语法。后续章节仍然以通俗易懂为宗旨,但它们适合于那些已经进展到更高级主题的学生。
本版相较于前面版本的变化
第6 版所表现的编程原理与第5 版是相同的。若你是教师,那么你在教授同一门课程时可以用与以前相同的顺序介绍相同的主题,且无须对这些主题所涉及的内容或章节加以改变。相较于前一版本,本版的变化几乎全部体现为追加性材料,如下所示:
增加了对如何用 Java 8的 lambda表达式进行函数式编程的介绍。
增加了一些循环、网络和异常处理方面的内容和例子。
增加了对如何使用 JavaFX创建 GUI 的介绍。
增加了 15 个新的编程项目。
没有非标准软件
本书中只使用标准Java 类库中的类,而未使用任何非标准软件。
Java 范围
本书中的所有程序都用Java 8 测试过。目前,Oracle 未对Java 的未来版本提出任何会影响本书中方法的变更。
面向对象编程
本书详尽地介绍了以Java 语言实现的封装、继承和多态。在关于Swing GUI 的章节中,介绍了事件驱动的编程并提供了大量的练习。
主题排序的灵活性
本书允许教师重新安排书中所论述的主题。对于旨在作为参考书的书籍来说,这一点是很重要的。这一点也符合我写书的基本原则:使书籍能适应教师的风格而不是让教师受制于作者在主题编排上的个人偏好。为此,本书每一章开始时都有一个名为“前导知识”的部分,此部分说明了在学习相应的章节时需要事先掌握的有关内容。接下来“带星号的部分”进一步增加了本书在使用上的灵活性。
带星号的部分
每一章中都有若干带星号(★)的部分,这些部分是可选的。对于初学者来说它们所包含的内容难度较大,可以跳过不学或者推迟到以后再学,而这样做并不会破坏本书学习的连续性。我们希望读者最后还是会返回来把这些内容学完。对于高年级的学生来说,不应将带星号的部分视为可选的内容。
通俗易懂
对于一本书来说,不仅需要以恰当的次序论述恰当的主题并让教师或其他专家在阅读时觉得其内容清晰无误,而且需要通俗易懂,让事先不懂其内容的人也可以读懂学会。和我编著的其他那些已被证实很受欢迎的教科书一样,本书对学生来说也是容易使用和通俗易懂的。
总结框
在本书中,对每个重要知识点都做了概括,这些概括均用方框框了起来。它们分布和贯穿于每一章。作为对相关内容的总结,它们可用作快速参考源,并为想大体上了解Java 特征的读者提供了快速学习Java 语法的途径。
自测题
每一章都包含了很多自测题以帮助学生掌握该章的关键知识点。在每一章的末尾给出了该章所有自测题的参考答案。
其他特征
每一章都将给出陷阱、编程小贴士以及带有示例运行结果的完整程序示例。每一章均以“本章小结”和一个适合作为编程项目的项目集结束。
如何访问为教师和学生提供的资源
可利用“我的编程实验室”(MyProgrammingLabTM)进行在线练习和测评。“我的编程实验室”可帮助学生充分掌握编程的逻辑、语义和语法。对于尚未很好掌握常见高级编程语言基本概念和范式的初学者来说,可以通过“我的编程实验室”所提供的实战练习和即时的、个性化的反馈,提高自己的编程能力。
作为自学及课后作业工具,“我的编程实验室”包含围绕着本书结构组织起来的数百个小型练习题。对于学生来说,系统会自动检测他们所提交的代码在逻辑和语法上的错误,并给出有针对性的提示,使他们能够找出什么地方有错误以及错误原因。对于教师来说,系统则提供了一个全面的成绩簿,利用它可以跟踪正确的和不正确的答案以及存储学生输入的代码以便评审。
若想全面了解“我的编程实验室”,以便查看到来自老师和学生的反馈或者在你的课程中开始使用“我的编程实验室”,请访问http://www.pearsonmylabandmastering.com/northamerica/myprogramminglab/(需要注册)。
支持材料
本书中的源代码
获取网址是www.pearsonhighered.com/cs-resources/。
其他资源
这仅供www. pearsonhighered.com/irc 网站上具备资格的教师获得。如果有国内教师采用本书作为教材,他们需要自行联系培生中国获得教辅资源(本书末尾附有联系表格)。
致谢
本书的问世得益于很多人给予的宝贵帮助和支持:我以前的编辑Addison-Wesley出版公司的Susan Hartman,是最初提议我写作本书的人,并与我一起完成了本书的最初几版;我现在的编辑Matt Goldstein 为本书后续版本的审校、修订及宣传提供了支持并提出了若干好主意;Kelsey Loanes、Rose Kernan、Demetrius Hall 和Pearson 公司其他一些优秀的人士也提供了宝贵的帮助和鼓励。
许多人员审校了本书,为本书指出了需要修改的错误并提供了建议。他们的贡献是非常有帮助的,我很感谢他们。
特别感谢阿拉斯加安克雷奇大学的肯瑞克? 莫克(Kenrick Mock),该版本的修订工作是由他来做的。他又一次将这么艰巨的工作完成得让我、编辑以及他本人感到满意。
我非常感谢他如此出色的工作。
沃尔特? 萨维奇(Walter Savitch)

读者服务
轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。
? 下载资源:本书如提供示例代码及资源文件,均可在 下载资源 处下载。
? 提交勘误:您对书中内容的修改意见可在 提交勘误 处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。
? 交流互动:在页面下方 读者评论 处留下您的疑问或观点,与我们和其他读者一
同学习交流。
页面入口:http://www.broadview.com.cn/32866

目录

目录
第1章 入门知识 1
1.1 Java简介 2
Java语言的起源 ★ 2
对象和方法 3
小程序(applet)★ 4
一个Java应用程序示例 4
字节码和Java虚拟机 7
类装载器★ 9
编译一个Java程序或类 9
运行一个Java程序 9
小贴士:错误消息 10
1.2 表达式和赋值语句 11
标识符 11
变量 12
赋值语句 14
小贴士:初始化变量 15
更多赋值语句知识★ 16
赋值兼容性 17
常量 18
算数运算符和表达式 19
括号和优先级规则★ 20
整数和浮点数除法 22
陷阱:浮点数的舍入错误 22
陷阱:整数相除 23
类型转换 24
自增运算符和自减运算符 25
1.3 String类 27
字符串常量和变量 27
字符串连接 28
类 29
String类的方法 30
转义字符 34
字符串处理 35
Unicode字符集★ 36
1.4 程序风格 37
命名常量 37
Java拼写约定 39
注释 40
缩进 41
本章小结 41
自测题答案 42
编程项目 44
第2章 流程控制 47
2.1 屏幕输出 48
System.out.println 48
小贴士:编辑输出格式的不同方法 50
使用printf编辑输出格式 51
小贴士:用printf编辑金额格式 54
小贴士:遗留代码 55
使用NumberFormat编辑金额输出格式 ★ 56
导入包和类 58
DecimalFormat类 ★ 59
2.2 使用Scanner类进行控制台输入 62
Scanner类 63
陷阱:行终止符'\n'的处理 67
空字符串 68
小贴士:输入提示 68
小贴士:输入反馈 68
示例:自助结账程序 70
其他输入分隔符 70
2.3 文件输入简介 72
用Scanner类进行文本文件输入 72
本章小结 75
自测题答案 75
编程项目 77
第3章 控制流 81
3.1 分支机制 82
if-else语句 82
省略else 83
复合语句 83
小贴士:放置花括号 84
嵌套语句 85
多分支if-else语句 86
示例:州所得税 86
switch语句 88
陷阱:忘记switch语句中的break 91
条件运算符 ★ 92
3.2 布尔表达式 92
简单布尔表达式 93
陷阱:用=代替== 93
陷阱:使用==比较字符串 94
字典顺序和字母顺序 95
建立布尔表达式 97
陷阱:不等式串 98
计算布尔表达式 98
小贴士:命名布尔boolean变量 101
短路求值与完整求值 101
优先级和结合规则 102
3.3 循环 107
while语句和do-while语句 108
算法和伪代码 110
示例:分数列表的平均分 112
for语句 113
for语句中的逗号 115
小贴士:重复N次循环 116
陷阱:for语句中多余的分号 116
陷阱:无限循环 117
嵌套循环 118
break语句和continue语句★ 120
exit语句 121
3.4 调试 122
循环bug 122
跟踪变量 122
常规调试技术 123
示例:调试一个输入验证循环 124
预防性编码 127
断言检查★ 127
3.5 生成随机数★ 129
Random对象 130
Math.random( )方法 131
本章小结 132
自测题答案 132
编程项目 136
第4章 类的定义 I 141
4.1 类的定义概述 142
实例变量和方法 145
方法续论 147
小贴士:任何方法都能用作void方法 150
局部变量 152
块 152
小贴士:在一个for语句中声明变量 153
原始类型参数 154
陷阱:术语“形参”和“实参”的使用 159
类参数的简单示例 160
this参数 160
返回布尔值的方法 162
方法equals和toString 164
递归方法 166
小贴士:对方法进行测试 167
4.2 信息的隐藏和封装 168
修饰符public和private 169
示例:另一个日期类 170
get和set方法 171
小贴士:一个类可以访问该类所有对象的私有成员 174
小贴士:set方法可以返回一个布尔值 175
前置条件和后置条件 176
4.3 重载 177
重载的规则 177
陷阱:重载与自动类型转换 180
陷阱:不能根据返回类型进行重载 182
4.4 构造函数 183
构造函数的定义 183
小贴士:你可以在构造函数中调用另一个方法 190
小贴士:构造函数带有一个this参数 190
小贴士:添加一个无参数构造函数 190
示例:日期类的最终版本 191
默认变量初始化 192
另一种初始化实例变量的方法 192
示例:一个宠物记录类 193
StringTokenizer类★ 196
本章小结 200
自测题答案 201
编程项目 204
第5章 类的定义 II 211
5.1 静态方法和静态变量 212
静态方法 212
陷阱:在静态方法中调用非静态方法 215
小贴士:你可以在任何类中放置main函数 215
静态变量 218
Math类 222
封装类 225
自动装箱和拆箱 226
封装类中的静态方法 227
陷阱:封装类没有无参数构造函数 229
5.2 引用和类参数 231
变量和内存 231
引用 232
类参数 237
陷阱:对类类型的变量使用=和== 240
常量null 241
陷阱:空指针异常 242
new运算符和匿名对象 242
示例:键盘输入的另一种方法★ 243
小贴士:使用静态导入★ 245
5.3 引用的使用和滥用 246
示例:Person类 246
陷阱:null可以作为方法的参数 251
拷贝构造函数 253
陷阱:隐私泄露 255
可变类和不可变类 258
小贴士:深拷贝vs.浅拷贝 259
小贴士:假设你的同事是恶意的 260
5.4 包和javadoc 260
包和import语句 261
java.lang包 262
包名和目录 262
陷阱:子类不是自动导入的 264
默认包 264
陷阱:不要在类路径中包含当前目录 264
编译时指定类路径★ 265
命名冲突★ 266
javadoc简介 ★ 266
为javadoc注释类★ 267
运行javadoc★ 268
本章小结 269
自测题答案 270
编程项目 273
第6章 数组 279
6.1 数组简介 280
数组的创建和访问 280
length实例变量 283
小贴士:在数组中使用for循环 284
陷阱:数组下标总是从0开始 285
陷阱:数组越界 285
数组的初始化 285
陷阱:字符数组不是字符串 287
6.2 数组和引用 287
数组是对象 288
陷阱:具有类基本类型的数组 289
数组参数 289
陷阱:在数组中使用=和== 291
main方法的参数★ 294
返回数组的方法 295
6.3 用数组进行编程 297
部分填充数组 297
示例:部分填充数组的类 300
小贴士:get方法不需要返回实例变量 303
“for-each”循环★ 303
参数个数可变的方法★ 306
示例:一个字符串处理示例★ 308
数组实例变量的隐私泄露 309
示例:对数组排序 312
枚举类型★ 315
小贴士:在switch语句中使用枚举类型★ 319
6.4 多维数组 321
多维数组的基础知识 321
使用length实例变量 323
参差数组★ 323
多维数组参数和返回值 324
示例:一个成绩册类 325
本章小结 330
自测题答案 330
编程项目 336
第7章 继承 343
7.1 继承的基础知识 344
派生类 344
重写方法的定义 352
修改重写方法的返回类型 353
修改重写方法的访问权限 354
陷阱:重写 vs. 重载 354
super构造函数 355
this构造函数 356
小贴士:派生类的对象有多个类型 357
陷阱:术语子类和超类 359
示例:增强的StringTokenizer类★ 359
7.2 封装和继承 362
陷阱:基类中私有变量的使用 362
陷阱:私有方法不能被有效地继承 364
受保护访问和包访问 364
陷阱:忘记默认包 366
陷阱:受保护访问的限制★ 366
7.3 使用继承编程 368
小贴士:静态变量是继承的 368
小贴士:“is a”vs. “has a” 369
访问重新定义的基类方法 369
陷阱:你不能使用多个super 370
Object类 371
定义equals的正确方式 371
小贴士:getClass vs. instanceof★ 373
本章小结 377
自测题答案 377
编程项目 380
第8章 多态与抽象类 385
8.1 多态 386
后期绑定 386
final修饰符 388
示例:销售记录 389
在toString中使用后期绑定 394
陷阱:静态方法不使用后期绑定 395
向下转型和向上转型 396
陷阱:向下转型 398
小贴士:检查向下转型是否是合法的 399
clone方法浅析 400
陷阱:有时clone方法的返回类型是对象 401
陷阱:拷贝构造函数的限制★ 402
8.2 抽象类 405
抽象类综述 405
陷阱:你无法创建抽象类的实例 408
小贴士:抽象类是一种类型 409
本章小结 410
自测题答案 410
编程项目 412
第9章 异常处理 415
9.1 异常处理基础知识 416
try-catch机制 417
用Scanner类进行异常处理 418
小贴士:异常控制的循环 419
抛出异常 421
示例:异常处理的“玩具”示例 422
异常类 426
标准包中的异常类 427
定义异常类 428
小贴士:保留getMessage 432
小贴士:异常类可以携带任何类型的消息 434
多个catch块 438
陷阱:先捕获更具体的异常 439
9.2 在方法中抛出异常 441
在方法中抛出异常概述 441
在throws从句中声明异常 443
捕获或声明规则的例外情况 445
派生类中的throws从句 447
何时使用异常 447
示例:检索高分 448
事件驱动编程★ 451
9.3 更多异常处理编程技术 452
陷阱:嵌套的try-catch块 452
finally块★ 452
重新抛出异常★ 454
AssertionError类★ 454
ArrayIndexOutOfBoundsException 454
本章小结 455
自测题答案 455
编程项目 459
第10章 文件I/O 463
10.1 文件I/O简介 464
流 464
文本文件和二进制文件 465
10.2 文本文件 466
写入文本文件 466
陷阱:try块是一个块 470
陷阱:覆盖输出文件 471
追加到文本文件末尾 471
小贴士:toString可以帮助文本文件的输出 472
从文本文件中读取 473
使用Scanner读取文本文件 473
用Scanner测试文本文件的结束 475
使用BufferedReader读取文本文件 480
小贴士:用BufferedReader读取数字 483
用BufferedReader测试文本文件的结束 484
路径名 485
嵌套的构造函数调用 486
System.in、System.out和System.err 487
10.3 File类 489
用File类编程 489
10.4 二进制文件★ 492
将简单数据写入二进制文件中 493
UTF和writeUTF 496
从二进制文件中读取简单数据 497
检查二进制文件的结束 501
陷阱:用错误的方式检查文件结束 502
对象的二进制I/O 503
Serializable接口 505
陷阱:将类类型混合在同一个文件中 506
二进制文件中的数组对象 506
10.5 随机存取二进制文件★ 508
读写同一个文件 508
陷阱:RandomAccessFile不需要从空文件开始 512
本章小结 512
自测题答案 513
编程项目 516
第11章 递归 521
11.1 递归void方法 522
示例:垂直显示的数字 523
跟踪递归调用 525
递归详解 527
陷阱:无限递归 528
递归的栈★ 530
陷阱:栈溢出★ 531
递归与迭代 531
11.2 返回值的递归方法 532
返回值的递归方法的一般形式 532
示例:另一个幂方法 532
11.3 递归思维 536
递归设计技巧 536
二分查找★ 537
二分查找的效率★ 542
示例:查找一个文件 543
本章小结 546
自测题答案 546
编程项目 550
第12章 UML和模式 555
12.1 UML 556
UML的历史 557
UML类图 557
类交互 557
继承图 558
UML的更多知识 559
12.2 模式 ★ 560
适配器模式★ 560
模型-视图-控制器模式★ 560
示例:排序模式 561
排序模式的限制 566
排序模式的效率★ 567
小贴士:语用学和模式 567
模式形式 567
本章小结 568
自测题答案 568
编程项目 570
第13章 接口和内部类 573
13.1 接口 574
接口概述 574
抽象类实现接口 576
派生接口 577
陷阱:接口语义不会被强制执行 578
Comparable接口 579
示例:使用Comparable接口 580
接口中的预定义常量 584
陷阱:不一致的接口 584
Serializable接口★ 587
Cloneable接口 587
13.2 内部类的简单使用 590
帮助类 590
小贴士:内部类和外部类可以访问彼此的私有成员 591
示例:一个银行账户类 591
内部类的.class文件 595
陷阱:内部类的其他用途 595
13.3 内部类的更多内容 595
静态内部类 595
公有内部类 596
小贴士:调用外部类的方法 598
嵌套内部类 599
内部类和继承 599
匿名类 600
小贴士:为什么要使用内部类 602
本章小结 602
自测题答案 603
编程项目 607
第14章 泛型和ArrayList类 611
14.1 ArrayList类 612
使用ArrayList类 613
小贴士:在ArrayList中添加元素的总结 617
ArrayList类中的方法 618
“for-each”循环 620
示例:高尔夫球成绩 623
小贴士:使用trimToSize节约内存 625
陷阱:clone方法会进行浅拷贝★ 625
Vector类 626
参数化的类和泛型 627
陷阱:非参数化的ArrayList和Vector类 627
14.2 泛型 627
泛型基础知识 627
陷阱:用-Xlint选项编译 629
示例:有序对的泛型类 629
陷阱:泛型构造函数名没有类型参数 632
陷阱:你不能用原始类型替换类型参数 633
陷阱:并不是在使用类型名称的任何地方都可以使用类型参数 633
陷阱:泛型类的实例化不可以是数组基本类型 633
小贴士:类定义中可以有多个类型参数 634
陷阱:泛型类不能是异常类 635
类型参数的限制 636
小贴士:泛型接口 638
泛型方法★ 638
泛型类的继承★ 639
本章小结 641
自测题答案 641
编程项目 643
第15章 链式数据结构 647
15.1 Java链表 649
示例:简单的链表类 649
使用链表 652
陷阱:隐私泄露 657
节点内部类 657
示例:泛型链表 660
陷阱:使用Node,而不是Node 664
链表的equals方法 664
15.2 拷贝构造函数和clone方法★ 665
简单的拷贝构造函数和clone方法★ 666
异常★ 666
陷阱:clone方法在Object中是受保护的★ 668
小贴士:使用类型参数限制可以得到更好的clone方法★ 669
示例:带有深拷贝clone方法的链表★ 672
小贴士:克隆是一种“全有或者全无”事件 674
15.3 迭代器 675
定义一个迭代器类 675
添加和删除节点 680
15.4 链表的变形 683
双向链表 683
栈数据结构 691
队列数据结构 693
运行时间和大O符号 695
链表的效率 699
15.5 链式哈希表 700
字符串的哈希函数 701
哈希表的效率 704
15.6 set 704
set的基本操作 705
使用链表的set的效率 709
15.7 树 710
树的性质 710
示例:一个二叉查找树类 ★ 712
二叉查找树的效率★ 716
本章小结 716
自测题答案 717
编程项目 722
第16章 集合、映射和迭代器 725
16.1 集合 726
通配符 727
集合框架 728
陷阱:可选操作 733
小贴士:处理所有这些异常 733
具体的集合类 734
ArrayList和Vector之间的区别 741
集合框架的非参数化版本★ 742
陷阱:省略 742
16.2 Map映射 742
具体的Map类 744
16.3 迭代器 748
迭代器的概念 748
Iterator接口 748
小贴士:for-each循环作为迭代器 750
列表迭代器 751
陷阱:next可以返回一个引用 753
小贴士:定义自己的迭代器类 754
本章小结 755
自测题答案 755
编程项目 756
第17章 Swing I 761
17.1 事件驱动编程 762
事件和监听器 763
17.2 按钮、事件和其他Swing基础知识 764
示例:一个简单的窗口 764
陷阱:忘记编写关闭窗口按钮的代码 768
按钮 769
动作监听器和动作事件 770
陷阱:修改actionPerformed的方法头 771
小贴士:结束一个Swing程序 772
示例:第一个Swing GUI的更好版本 772
标签 775
颜色 776
示例:一个带有标签和颜色的GUI 777
17.3 容器和布局管理器 779
边界布局管理器 779
流布局管理器 782
网格布局管理器 783
面板 786
示例:用面板创建3种颜色 787
Container类 790
小贴士:分别编写GUI的外观和动作 792
模型-视图-控制器模式★ 793
17.4 菜单和按钮 793
示例:一个带有菜单的GUI 794
菜单、菜单项和菜单栏 794
嵌套菜单★ 798
AbstractButton类 798
setActionCommand方法 801
监听器作为内部类★ 802
17.5 文本框和文本域 804
文本框和文本域概述 804
小贴士:给文本域添加标签 809
小贴士:输入和输出数字 810
一个Swing计算器 810
本章小结 815
自测题答案 815
编程项目 821
第18章 Swing II 823
18.1 窗口监听器 824
示例:一个窗口监听器内部类 825
dispose方法 828
陷阱:忘记调用setDefaultCloseOperation 829
WindowAdapter类 829
18.2 图标和滚动条 831
图标 831
滚动条 836
示例:可以改变可见性的组件 840
18.3 Graphics类 842
图形对象的坐标系统 842
paint方法和Graphics类 843
绘制椭圆 848
绘制弧线 848
圆角矩形★ 851
面板的paintComponent 851
动作绘制和repaint 852
更新GUI的更多细节★ 856
18.4 颜色 857
指定绘图颜色 857
定义颜色 858
陷阱:使用double定义颜色 859
JColorChooser对话框窗口 860
18.5 字体drawString方法 862
drawString方法 863
字体 864
本章小结 867
自测题答案 867
编程项目 871
第19章 Java永不落幕 875
19.1 多线程 876
示例:一个无响应的GUI 877
Thread.sleep 877
getGraphics方法 880
使用线程修复一个无响应的程序 881
示例:一个多线程程序 881
Thread类 881
Runnable接口★ 884
竞争条件和线程同步★ 886
19.2 流套接字网络 890
套接字 890
套接字和线程 893
URL类 894
19.3 JavaBeans 895
组件模式 895
JavaBeans模型 895
19.4 Java和数据库连接 896
关系数据库 896
Java DB和JDBC 897
SQL 898
19.5 用JSP进行Web编程 906
applet、servlet和JSP 906
Oracle GlassFish企业级服务器 908
HTML表单——通用网关接口 909
JSP声明、表达式、scriptlet和指令 911
19.6 浅谈Java 8中的函数式编程 918
19.7 浅谈JavaFX 924
本章小结 936
自测题答案 937
编程项目 938
第20章 applet和HTML1
附录A 关键字 941
附录B 优先级和结合性规则 943
附录C ASCII字符集 945
附录D printf的格式规范 947
附录E 类和接口总结 949
1 英文原版书的第20章是放在相关配套网站上的,本中文版与其保持一致,也放在www.broadview.com.cn/32866,读者可下载阅读。

读者评论

  • 电工社博文视点出的《疯狂J a v a讲义第4版》和翻译的《Absolute J a v a中文版》比砖头还厚,好几斤重,携带阅读极不方便,就不能分上下册出版吗?这样的书还是要考虑出电子版顺应时代潮流。

    bv101发表于 2018/7/6 20:37:10