新書推薦:
《
汉娜·阿伦特与以赛亚·伯林 : 自由、政治与人性
》
售價:HK$
109.8
《
女性与疯狂(女性主义里程碑式著作,全球售出300万册)
》
售價:HK$
109.8
《
药食同源中药鉴别图典
》
售價:HK$
67.0
《
设计中的比例密码:建筑与室内设计
》
售價:HK$
87.4
《
冯友兰和青年谈心系列:看似平淡的坚持
》
售價:HK$
55.8
《
汉字理论与汉字阐释概要 《说解汉字一百五十讲》作者李守奎新作
》
售價:HK$
76.2
《
汗青堂丛书144·决战地中海
》
售價:HK$
168.0
《
逝去的武林(十周年纪念版 武学宗师 口述亲历 李仲轩亲历一九三零年代武人言行录)
》
售價:HK$
54.9
|
內容簡介: |
本书是Java语言的经典教材,多年来畅销不衰。本书全面整合了Java 8的特性,采用“基础优先,问题驱动”的教学方式,循序渐进地介绍了程序设计基础、解决问题的方法、面向对象程序设计、图形用户界面设计、异常处理、IO和递归等内容。此外,本书还全面且深入地覆盖了一些高级主题,包括算法和数据结构、多线程、网络、国际化、高级GUI等内容。
|
關於作者: |
【有更新】
作者简介
梁勇(Y. Daniel Liang) 现为阿姆斯特朗亚特兰大州立大学计算机科学系教授。之前曾是普渡大学计算机科学系副教授,并两次获得普渡大学杰出研究奖。他所编写的Java教程在美国大学Java课程中采用率极高,同时他还兼任Prentice Hall Java系列丛书的编辑。他是“Java Champion”荣誉得主,并在世界各地为在校学生和程序员做Java程序设计方法及技术方面的讲座。
【有更新】
译者简介
戴开宇 复旦大学软件学院教师,工程硕士导师,中国计算机学会会员。博士毕业于上海交通大学计算机应用专业,2011~2012年在美国佛罗里达大学作访问学者。承担多门本科专业课程、通识教育课程以及工程硕士课程,这些课程被评为校精品课程、上海市重点建设课程、IBM-教育部精品课程等。
|
目錄:
|
第1章 计算机、程序和Java概述1
1.1 引言2
1.2 什么是计算机2
1.3 编程语言7
1.4 操作系统9
1.5 Java、万维网以及其他10
1.6 Java语言规范、API、JDK、JRE和IDE11
1.7 一个简单的Java程序12
1.8 创建、编译和执行Java程序15
1.9 程序设计风格和文档18
1.10 程序设计错误20
1.11 使用NetBeans开发Java程序23
1.12 使用Eclipse开发Java程序25
第2章 基本程序设计33
2.1 引言34
2.2 编写简单的程序34
2.3 从控制台读取输入37
2.4 标识符40
2.5 变量40
2.6 赋值语句和赋值表达式42
2.7 命名常量43
2.8 命名习惯44
2.9 数值数据类型和操作45
2.10 数值型字面值48
2.11 表达式求值以及操作符优先级50
2.12 示例学习:显示当前时间52
2.13 增强赋值操作符54
2.14 自增和自减操作符55
2.15 数值类型转换57
2.16 软件开发过程59
2.17 示例学习:整钱兑零63
2.18 常见错误和陷阱65
第3章 选择75
3.1 引言76
3.2 boolean数据类型76
3.3 if语句78
3.4 双分支if-else语句80
3.5 嵌套的if语句和多分支if-else语句81
3.6 常见错误和陷阱83
3.7 产生随机数87
3.8 示例学习:计算身体质量指数89
3.9 示例学习:计算税率90
3.10 逻辑操作符93
3.11 示例学习:判定闰年97
3.12 示例学习:彩票98
3.13 switch语句100
3.14 条件操作103
3.15 操作符的优先级和结合规则104
3.16 调试106
第4章 数学函数、字符和字符串119
4.1 引言120
4.2 常用数学函数120
4.3 字符数据类型和操作125
4.4 String类型130
4.5 示例学习139
4.6 格式化控制台输出145
第5章 循环159
5.1 引言160
5.2 while循环160
5.3 示例学习:猜数字163
5.4 循环设计策略166
5.5 使用用户确认或者标记值控制循环168
5.6 do-while循环170
5.7 for循环173
5.8 采用哪种循环176
5.9 嵌套循环178
5.10 最小化数值错误180
5.11 示例学习182
5.12 关键字break和continue186
5.13 示例学习:判断回文189
5.14 示例学习:显示素数191
第6章 方法205
6.1 引言206
6.2 定义方法206
6.3 调用方法208
6.4 void方法与返回值方法211
6.5 按值传参214
6.6 模块化代码217
6.7 示例学习:将十六进制数转换为十进制数219
6.8 重载方法221
6.9 变量的作用域224
6.10 示例学习:生成随机字符225
6.11 方法抽象和逐步求精227
第7章 一维数组247
7.1 引言248
7.2 数组的基础知识248
7.3 示例学习:分析数字255
7.4 示例学习:一副牌256
7.5 复制数组258
7.6 将数组传递给方法259
7.7 方法返回数组262
7.8 示例学习:统计每个字母出现的次数263
7.9 可变长参数列表266
7.10 数组的查找267
7.11 数组的排序271
7.12 Arrays类272
7.13 命令行参数274
第8章 多维数组289
8.1 引言290
8.2 二维数组基础290
8.3 处理二维数组293
8.4 将二维数组传递给方法295
8.5 示例学习:多选题测验评分296
8.6 示例学习:找出距离最近的点对298
8.7 示例学习:数独300
8.8 多维数组303
第9章 对象和类323
9.1 引言324
9.2 为对象定义类324
9.3 示例:定义类和创建对象326
9.4 使用构造方法构造对象331
9.5 通过引用变量访问对象332
9.6 使用Java库中的类336
9.7 静态变量、常量和方法339
9.8 可见性修饰符344
9.9 数据域封装346
9.10 向方法传递对象参数349
9.11 对象数组353
9.12 不可变对象和类355
9.13 变量的作用域357
9.14 this引用358
第10章 面向对象思考367
10.1 引言368
10.2 类的抽象和封装368
10.3 面向对象的思想372
10.4 类的关系375
10.5 示例学习:设计Course类378
10.6 示例学习:设计栈类380
10.7 将基本数据类型值作为对象处理382
10.8 基本类型和包装类类型之间的自动转换385
10.9 BigInteger和BigDecimal类386
10.10 String类388
10.11 StringBuilder类和StringBuffer类394
第11章 继承和多态411
11.1 引言412
11.2 父类和子类412
11.3 使用super关键字418
11.4 方法重写421
11.5 方法重写与重载422
11.6 Object类及其toString方法424
11.7 多态425
11.8 动态绑定425
11.9 对象转换和instanceof操作符429
11.10 Object类的equals方法433
11.11 ArrayList类434
11.12 关于列表的一些有用方法440
11.13 示例学习:自定义栈类441
11.14 protected数据和方法442
11.15 防止继承和重写445
第12章 异常处理和文本IO453
12.1 引言454
12.2 异常处理概述454
12.3 异常类型459
12.4 关于异常处理的更多讨论462
12.5 finally子句470
12.6 何时使用异常471
12.7 重新抛出异常472
12.8 链式异常473
12.9 创建自定义异常类474
12.10 File类477
12.11 文件输入和输出480
12.12 从Web上读取数据486
12.13 示例学习:Web爬虫488
第13章 抽象类和接口499
13.1 引言500
13.2 抽象类500
13.3 示例学习:抽象的Number类505
13.4 示例学习:Calendar和GregorianCalendar507
13.5 接口510
13.6 Comparable接口513
13.7 Cloneable接口518
13.8 接口与抽象类523
13.9 示例学习:Rational类526
13.10 类的设计原则531
第14章 JavaFX基础541
14.1 引言542
14.2 JavaFX与Swing以及AWT的比较542
14.3 JavaFX程序的基本结构542
14.4 面板、组、UI组件以及形状545
14.5 属性绑定548
14.6 结点的共同属性和方法551
14.7 Color类553
14.8 Font类554
14.9 Image和ImageView类556
14.10 布局面板和组558
14.11 形状567
14.12 示例学习:ClockPane类580
第15章 事件驱动编程和动画593
15.1 引言594
15.2 事件和事件源596
15.3 注册处理器和处理事件597
15.4 内部类601
15.5 匿名内部类处理器602
15.6 使用lambda表达式简化事件处理605
15.7 示例学习:贷款计算器609
15.8 鼠标事件611
15.9 键盘事件613
15.10 可观察对象的监听器616
15.11 动画618
15.12 示例学习:弹球626
15.13 示例学习:美国地图630
第16章 JavaFX UI组件和多媒体643
16.1 引言644
16.2 Labeled和Label644
16.3 Button646
16.4 CheckBox648
16.5 RadioButton651
16.6 TextField654
16.7 TextArea655
16.8 ComboBox659
16.9 ListView662
16.10 ScrollBar665
16.11 Slider668
16.12 示例学习:开发一个井字游戏671
16.13 视频和音频676
16.14 示例学习:国旗和国歌679
第17章 二进制 IO691
17.1 引言692
17.2 在Java中如何处理文本IO692
17.3 文本IO与二进制IO693
17.4 二进制IO类694
17.5 示例学习:复制文件704
17.6 对象IO706
17.7 随机访问文件711
第18章 递归719
18.1 引言720
18.2 示例学习:计算阶乘720
18.3 示例学习:计算斐波那契数723
18.4 使用递归解决问题726
18.5 递归辅助方法728
18.6 示例学习:获取目录的大小731
18.7 示例学习:汉诺塔733
18.8 示例学习:分形736
18.9 递归与迭代740
18.10 尾递归740
附录A Java关键字751
附录B ASCII字符集752
附录C 操作符优先级表754
附录D Java修饰符756
附录E 特殊浮点值758
附录F 数系759
附录G 位操作符763
附录H 正则表达式764
附录I 枚举类型769
contentS
chapter 1 Introduction to computers, Programs, and Java. 1
1.1 Introduction 2
1.2 What Is a Computer? 2
1.3 Programming Languages 7
1.4 Operating Systems 9
1.5 Java, the World Wide Web, and Beyond 10
1.6 The Java Language Specification, API, JDK, JRE, and IDE 11
1.7 A Simple Java Program 12
1.8 Creating, Compiling, and Executing a Java Program 15
1.9 Programming Style and Documentation 18
1.10 Programming Errors 20
1.11 Developing Java Programs Using NetBeans 23
1.12 Developing Java Programs Using Eclipse 25
chapter 2 elementary Programming 33
2.1 Introduction 34
2.2 Writing a Simple Program 34
2.3 Reading Input from the Console 37
2.4 Identifiers 40
2.5 Variables 40
2.6 Assignment Statements and Assignment Expressions 42
2.7 Named Constants 43
2.8 Naming Conventions 44
2.9 Numeric Data Types and Operations 45
2.10 Numeric Literals 48
2.11 Evaluating Expressions and Operator Precedence 50
2.12 Case Study: Displaying the Current Time 52
2.13 Augmented Assignment Operators 54
2.14 Increment and Decrement Operators 55
2.15 Numeric Type Conversions 57
2.16 Software Development Process 59
2.17 Case Study: Counting Monetary Units 63
2.18 Common Errors and Pitfalls 65
chapter
|
內容試閱:
|
许多读者就本书之前的版本给出了很多反馈。这些评论和建议极大地改进了本书。这一版在表述、组织、示例、练习题以及附录方面都有大幅提高。
本书采用基础优先的方法,在设计用户自定义类之前,首先介绍基本的程序设计概念和技术。选择语句、循环、方法和数组这样的基本概念和技术是程序设计的基础,它们为学生进一步学习面向对象程序设计和高级Java程序设计做好准备。
本书以问题驱动的方式来教授程序设计,将重点放在问题的解决而不是语法上。我们通过使用在各种应用情景中引发思考的问题,使得程序设计的介绍变得更加有趣。前面章节的主线放在问题的解决上,引入合适的语法和库以支持编写解决问题的程序。为了支持以问题驱动的方式来教授程序设计,本书提供了大量不同难度的问题来激发学生的积极性。为了吸引各个专业的学生来学习,这些问题涉及很多应用领域,包括数学、科学、商业、金融、游戏、动画以及多媒体等。
本书将程序设计、数据结构和算法无缝整合在一起,采用一种实用的方式来教授数据结构。首先介绍如何使用各种数据结构来开发高效的算法,然后演示如何实现这些数据结构。通过实现,学生可以深入理解数据结构的效率,以及如何和何时使用某种数据结构。最后,我们设计和实现了针对树和图的用户自定义数据结构。
本书广泛应用于全球各大学的程序设计入门、数据结构和算法课程中。完全版包括程序设计基础、面向对象程序设计、GUI程序设计、数据结构、算法、并行、网络、数据库和Web程序设计。这个版本旨在把学生培养成精通Java的程序员。基础篇可用于程序设计的第一门课程(通常称为CS1)。基础篇包含完全版的前18章内容,本书还有一个AP版本,适合学习AP计算机科学(AP Computer Science)课程的高中生使用。
教授编程的最好途径是通过示例,而学习编程的唯一途径是通过动手练习。本书通过示例对基本概念进行了讲解,并提供了大量不同难度的练习题供学生进行练习。在我们的程序设计课程中,每次课后都布置了编程练习。
我们的目标是编写一本可以通过各种应用场景中的有趣示例来教授问题求解和程序设计的教材。如果您有任何关于如何改进本书的评论或建议,请给我发邮件。
Y. Daniel Liang
y.daniel.liang@gmail.com
www.cs.armstrong.eduliang
www.pearsonhighered.comliang
ACMIEEE课程体系2013版和ABET课程评价
新的ACMIEEE课程体系2013版将知识体系组织成18个知识领域。为了帮助教师基于本书设计课程,我们提供了示例教学大纲来确定知识领域和知识单元。作为一个常规的定制示例,示例教学大纲用于三学期的课程系列。示例教学大纲可以从教师资源配套网站获取。
许多读者来自ABET认证计划。ABET认证的一个关键组成部分是,通过针对课程效果的持续的课程评价确定薄弱环节。我们在教师资源配套网站中提供了课程效果示例,以及用于衡量课程效果的示例考试。
本版新增内容
本版对各个细节都进行了全面修订,以增强其清晰性、表述、内容、示例和练习题。本版主要的改进如下:
书中新增了“数据结构”方面的内容。本书使用一种实用的方式来介绍、实现和使用数据结构,并涵盖了一门典型的数据结构课程中的所有主题。另外,还提供了额外的奖励章节来介绍高级的数据结构,比如2-4树、B树以及红黑树等。
针对最新的Java技术进行了更新。使用Java 8版本中的新特征对示例和练习进行了改进和简化。
在第13章的接口介绍中,引入了默认方法和静态方法。
GUI相关章节都更新到JavaFX 8。改写了所有示例。示例和练习中的用户界面现在都是可以改变尺寸并且居中显示的。
在第15章的示例中,涵盖了内部类、匿名内部类以及lambda表达式的内容。
数据结构相关章节中,更多的示例和练习采用了lambda表达式来简化编程。方法引用在20.6节介绍Comparator接口时进行了介绍。
在第20章中介绍了forEach方法,作为对集合中每个元素应用一个动作而进行的循环的简单替代方法。
在第24~29章中,使用了Java 8中接口的默认方法重新设计和简化了MyList、MyArrayList、MyLinkedList、Tree、BST、AVLTree、MyMap、MyHashMap、MySet、MyHashSet、Graph、UnweightedGraph和WeightedGraph的实现。
第30章为全新章节,介绍集合流的聚合操作。
第31章介绍了FXML和Scene Builder可视化工具。
重新设计了配套网站,增加了新的交互式测试题、复习题、动画以及现场编程。
在教师资源网站上为教师额外提供了200多道编程练习题,并给出了答案。这些练习题没有出现在教材中。
可以访问www.pearsonhighered.comliang,获得和前一版本的关联以及新特征的完整列表。
教学特色
本书使用以下要素组织素材:
教学目标:在每章开始列出学生学习本章应该掌握的内容,学完这章后,学生能够判断自己是否达到这个目标。
引言:提出引发思考的问题以展开讨论,激发读者深入探讨该章内容。
要点提示:突出每节中涵盖的重要概念。
复习题:按节组织,帮助学生复习相关内容并评估掌握的程度。
示例学习:通过精心挑选示例,以容易理解的方式教授问题求解和程序设计概念。本书使用多个小的、简单的、激发兴趣的例子来演
|
|