新書推薦:
《
狂飙年代:18世纪俄国的新文化和旧文化(第二卷)
》
售價:HK$
177.0
《
万有引力书系 纳粹亿万富翁 德国财富家族的黑暗历史
》
售價:HK$
109.8
《
中国常见植物野外识别手册:青海册
》
售價:HK$
76.2
《
三星堆对话古遗址(从三星堆出发,横跨黄河流域,长江流域,对话11处古遗址,探源多元一体的中华文明)
》
售價:HK$
87.4
《
迷人的化学(迷人的科学丛书)
》
售價:HK$
143.4
《
宋代冠服图志(详尽展示宋代各类冠服 精美插图 考据严谨 细节丰富)
》
售價:HK$
87.4
《
形似神异:什么是中日传统政治文化的结构性差异
》
售價:HK$
55.8
《
养育不好惹的小孩
》
售價:HK$
77.3
內容簡介:
本书侧重于面向对象设计,通过浅显易懂的语言和代码,很好地平衡了完整实例和解释性讨论,并围绕着Java 语言的特性全面透彻地介绍诸多编程技术。书中全面介绍了Java 语言已经实现的封装、继承和多态性技术,并在介绍Swing GUI 的时候提及了事件驱动的编程,在介绍UML 和模式的同时进一步介绍了OOP。本书每节后都设计了相应的练习题,每章后都有针对本章内容的编程项目。本书不仅适合初学者使用,还可以作为使用Java 的后续计算机科学课程的参考书。
關於作者:
Walter John Savitch(生于1943年2月21日)由于发现了复杂性类NL(非确定型对数空间)、以及定义NSPACE和DSPACE复杂性类之间关系的Savitch定理而被人熟知。他为建立复杂性类所做的工作有助于我们创建执行非确定性和概率推理的背景。他还在自然语言处理和数学语言学领域做了大量的工作。他一直专注于计算机计算,因为它在10年前就已经被应用到遗传学和生物学。除了在理论计算机科学上所做的工作,Savitch还编著了很多关于学习使用CC、Java、Ada、Pascal等语言进行编程的教科书。在Stephen Cook的指导下,Savitch在1969年获得了加州大学伯克利分校的数学博士学位。 从那时候开始他就一直是加州大学圣地亚哥分校(UCSD)的教授,现在他还是计算机科学专业的名誉教授。
译有《完美Java(第6版)》、《信息架构:超越Web设计(第4版)》《像富人一样思考》《故事场景摩天楼》《互联网领导思维》《断点:互联网进化启示录》《游戏编程权威指南》《Unity 3.x游戏开发实例》《iPhone应用用户体验设计实战与案例》《社交网站界面设计》等书。
目錄 :
目录
第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 avs. 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章 文件IO 463
10.1 文件IO简介 464
流 464
文本文件和二进制文件 465
10.2 文本文件 466
写入文本文件 466
陷阱:try块是一个块 470
陷阱:覆盖输出文件 471
追加到文本文件末尾 471
小贴士:toString可以帮助文本文件的输出 472
从文本文件中读取 473
使用Scanner读取文本文件 473
用Scanner测试文本文件的结束 475
使用BufferedReader读取文本文件 480
小贴士:用BufferedReader读取数字 483
用
內容試閱 :
译者序
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。而且,作者还在本书中介绍了IO、异常处理的相关内容,分别位于第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.comnorthamericamyprogramminglab(需要注册)。
支持材料
本书中的源代码
获取网址是www.pearsonhighered.comcs-resources。
其他资源
这仅供www. pearsonhighered.comirc 网站上具备资格的教师获得。如果有国内教师采用本书作为教材,他们需要自行联系培生中国获得教辅资源(本书末尾附有联系表格)。
致谢
本书的问世得益于很多人给予的宝贵帮助和支持:我以前的编辑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.cn32866