新書推薦:
《
人才基因(凝聚30年人才培育经验与智慧)
》
售價:NT$
468.0
《
深度学习详解
》
售價:NT$
519.0
《
李白传(20世纪文史学家李长之经典传记)
》
售價:NT$
207.0
《
津轻:日本无赖派文学代表太宰治自传性随笔集
》
售價:NT$
302.0
《
河流之齿
》
售價:NT$
270.0
《
新经济史革命:计量学派与新制度学派
》
售價:NT$
406.0
《
盗墓笔记之秦岭神树4
》
售價:NT$
259.0
《
战胜人格障碍
》
售價:NT$
302.0
|
編輯推薦: |
* 国外出版多年的Java宝典教程,概念清晰,逻辑性强。
* 尽早讲解类和对象。
* 广泛的基础知识并提供大量实例。
* 轻松使用JavaSE 8或Java SE 9。
* 章末习题提供了挑战题及编程项目。
* 丰富教辅资源。
|
內容簡介: |
本书是一本Java 编程方面的优秀教材,秉承Deitel系列丛书的一贯特点:内容丰富、覆盖面广,提供详细代码与实例研究,总结出大量的面向对象编程技巧和经验。本书详细说明了在Java 中面向对象编程的基本理论及实用知识,以初学者为起点,由点到面、由浅入深、循序渐进地介绍了对象、继承、多态、接口、异常处理、JavaFX GUI、数据结构和集合、lambda与流、递归、搜索与排序、并发性、JDBC、JavaFX与多媒体、JShell 等,并且详细介绍了网络应用的开发与实践。第十一版在前一版的基础上增加了更多的实际案例,更新了很多内容,有助于读者学习和借鉴。本书包括更广泛的教学特性,其中列举了数百个可实际使用的程序,并给出了运行结果,可以使学生在学习时更为直观。
|
關於作者: |
Paul Deitel,Deitel Associates公司CEO兼CTO,具有超过35年计算机行业的工作经验,毕业于麻省理工学院。他拥有Java Certified Programmer和Java Certified Developer认证证书,并且被授予Oracle Java Champion称号。通过Deitel Associates公司,他向行业客户提供了数以百计的编程课程,这些客户包括:Cisco,IBM, Siemens,Sun Microsystems现在属于Oracle,Dell,Fidelity,NASA肯尼迪航天中心,美国国家风暴实验室,白沙导弹基地,Rogue Wave Software,Boeing,SunGard Higher Education,Nortel Networks,Puma,iRobot,Invensys,等等。他和合作者Harvey Deitel博士,是全球畅销的编程语言教材和专业图书视频产品的作者。Harvey Deitel博士,Deitel Associates公司主席兼首席战略官,具有55年以上的计算机行业工作经验。Deitel博士在麻省理工学院获得电子工程学士和硕士学位,在波士顿大学获得数学博士学位在将计算机科学专业从这些专业分离出去之前,Deitel博士已经学习过计算机知识。他具有丰富的大学教学经验,在与儿子Paul于1991年创立Deitel Associates公司之前,Deitel博士是波士顿大学计算机科学系主任并获得了终身教职。他们的出版物已经赢得了国际声誉,并被翻译成了日文、德文、俄文、西班牙文、法文、波兰文、意大利文、简体中文、繁体中文、韩文、葡萄牙文、希腊文、乌尔都文和土耳其文。Deitel博士为许多大公司、学术机构、政府部门和军队提供了数百场的专业编程培训。Paul Deitel,Deitel & Associates公司CEO兼CTO,具有超过35年计算机行业的工作经验,毕业于麻省理工学院。他拥有Java Certified Programmer和Java Certified Developer认证证书,并且被授予Oracle Java Champion称号。通过Deitel & Associates公司,他向行业客户提供了数以百计的编程课程,这些客户包括:Cisco,IBM, Siemens,Sun Microsystems现在属于Oracle,Dell,Fidelity,NASA肯尼迪航天中心,美国国家风暴实验室,白沙导弹基地,Rogue Wave Software,Boeing,SunGard Higher Education,Nortel Networks,Puma,iRobot,Invensys,等等。他和合作者Harvey Deitel博士,是全球畅销的编程语言教材和专业图书视频产品的作者。Harvey Deitel博士,Deitel & Associates公司主席兼首席战略官,具有55年以上的计算机行业工作经验。Deitel博士在麻省理工学院获得电子工程学士和硕士学位,在波士顿大学获得数学博士学位在将计算机科学专业从这些专业分离出去之前,Deitel博士已经学习过计算机知识。他具有丰富的大学教学经验,在与儿子Paul于1991年创立Deitel & Associates公司之前,Deitel博士是波士顿大学计算机科学系主任并获得了终身教职。他们的出版物已经赢得了国际声誉,并被翻译成了日文、德文、俄文、西班牙文、法文、波兰文、意大利文、简体中文、繁体中文、韩文、葡萄牙文、希腊文、乌尔都文和土耳其文。Deitel博士为许多大公司、学术机构、政府部门和军队提供了数百场的专业编程培训。
张永健,国际关系学院副教授,毕业于北京邮电大学,专业为通信、计算机,目前从事网络及信息安全、移动互联网安全技术、大数据及多媒体安全等研究方向,并教授计算机安全等相关课程。
|
目錄:
|
目 录
第1章 计算机、Internet与Java简介 1
1.1 简介 2
1.2 硬件和软件 3
1.3 数据层次 4
1.4 机器语言、汇编语言和高级语言 6
1.5 对象技术介绍 7
1.6 操作系统 9
1.7 编程语言 11
1.8 Java 12
1.9 典型的Java开发环境 12
1.10 测试驱动的Java应用 15
1.11 Internet和WWW 17
1.12 软件技术 19
1.13 Java问题解答 20
自测题 20
自测题答案 21
练习题 21
挑战题 22
第2章 Java应用介绍、输入输出、运算符 23
2.1 简介 23
2.2 第一个Java程序:输出一行文本 24
2.3 修改第一个Java程序 28
2.4 使用printf显示文本 29
2.5 另一个Java程序:整数相加 30
2.6 内存概念 33
2.7 算术运算 34
2.8 判断:相等性和关系运算符 36
2.9 小结 39
总结 39
自测题 41
自测题答案 42
练习题 44
挑战题 47
第3章 类、对象、方法与String简介 48
3.1 简介 48
3.2 实例变量、set方法和get方法 49
3.3 Account类:使用构造方法初始化对象 56
3.4 包含浮点数余额的Account类 58
3.5 基本类型与引用类型的比较 61
3.6 选修GUI与图形实例:一个简单的GUI 62
3.7 小结 67
总结 67
自测题 70
自测题答案 71
练习题 71
挑战题 72
第4章 控制语句1及赋值、与- -运算符 73
4.1 简介 73
4.2 算法 74
4.3 伪代码 74
4.4 控制结构 74
4.5 if单选择语句 76
4.6 if...else双选择语句 77
4.7 Student类:嵌套if...else语句 79
4.8 while循环语句 81
4.9 形成算法:计数器控制循环 82
4.10 形成算法:标记控制循环 85
4.11 形成算法:嵌套控制语句 90
4.12 复合赋值运算符 93
4.13 增量运算符和减量运算符 94
4.14 基本类型 96
4.15 选修GUI与图形实例:事件处理、画线 96
4.16 小结 104
总结 104
自测题 107
自测题答案 108
练习题 109
挑战题 113
第5章 控制语句2及逻辑运算符 115
5.1 简介 115
5.2 计数器控制循环的实质 116
5.3 for循环语句 116
5.4 使用for语句的示例 119
5.5 do...while循环语句 122
5.6 switch多选择语句 123
5.7 AutoPolicy类实例:switch语句中的字符串 127
5.8 break和continue语句 130
5.9 逻辑运算符 131
5.10 结构化编程小结 135
5.11 选修GUI与图形实例:绘制矩形和椭圆 138
5.12 小结 141
总结 141
自测题 143
自测题答案 144
练习题 145
挑战题 148
第6章 方法:深入探究 149
6.1 简介 149
6.2 Java中的程序单元 150
6.3 静态方法、静态字段和Math类 151
6.4 声明多参数方法 152
6.5 关于声明与使用方法的说明 155
6.6 方法调用栈与活动记录 156
6.7 实参提升与强制转换 157
6.8 Java API包 158
6.9 案例分析:安全的随机数生成方法 159
6.10 案例分析:机会游戏与enum类型 162
6.11 声明的作用域 165
6.12 方法重载 167
6.13 选修GUI与图形实例:颜色和填充图形 169
6.14 小结 171
总结 171
自测题 174
自测题答案 175
练习题 176
挑战题 180
第7章 数组与ArrayList 181
7.1 简介 182
7.2 数组 182
7.3 声明和创建数组 183
7.4 数组使用举例 184
7.5 异常处理:处理不正确的反馈值 190
7.6 案例分析:模拟洗牌和发牌 191
7.7 增强型for语句 194
7.8 将数组传入方法 195
7.9 按值传递与按引用传递 196
7.10 案例分析:GradeBook类用数组保存成绩 197
7.11 多维数组 201
7.12 案例分析:使用二维数组的GradeBook类 203
7.13 变长实参表 207
7.14 使用命令行实参 208
7.15 Arrays类 210
7.16 集合和ArrayList类简介 212
7.17 选修GUI与图形实例:画圆弧 214
7.18 小结 216
总结 216
自测题 219
自测题答案 219
练习题 220
拓展内容:建立自己的计算机 227
挑战题 231
第8章 类与对象:深入探究 233
8.1 简介 233
8.2 Time类案例分析 234
8.3 对成员的访问控制 237
8.4 用this引用访问当前对象的成员 237
8.5 Time类案例分析:重载构造方法 239
8.6 默认构造方法与无实参构造方法 243
8.7 set方法和get方法 243
8.8 组合 244
8.9 enum类型 246
8.10 垃圾回收 248
8.11 静态类成员 249
8.12 静态导入 251
8.13 final实例变量 252
8.14 包访问 253
8.15 将BigDecimal用于精确的货币计算 254
8.16 选修GUI与图形实例:使用包含图形的对象 255
8.17 小结 258
总结 258
自测题 261
自测题答案 261
练习题 261
挑战题 264
第9章 面向对象编程:继承 265
9.1 简介 265
9.2 超类与子类 266
9.3 protected成员 267
9.4 超类与子类的关系 268
9.5 子类的构造方法 282
9.6 Object类 283
9.7 比较组合和继承的差异 283
9.8 小结 285
总结 285
自测题 286
自测题答案 286
练习题 286
第10章 面向对象编程:多态和接口 289
10.1 简介 289
10.2 多态示例 290
10.3 演示多态行为 291
10.4 抽象类和抽象方法 293
10.5 案例分析:使用多态的工资系统 295
10.6 超类和子类变量之间允许的赋值 305
10.7 final方法和final类 305
10.8 分析从构造方法调用方法时的问题 306
10.9 创建和使用接口 306
10.10 Java SE 8的接口强化 312
10.11 Java SE 9的私有接口方法 313
10.12 私有构造方法 314
10.13 使用接口继承而非实现继承 314
10.14 选修GUI与图形实例:利用多态性画图 316
10.15 小结 317
总结 318
自测题 320
自测题答案 321
练习题 321
挑战题 322
第11章 异常处理:深入探究 323
11.1 简介 323
11.2 示例:除数为0时没有处理异常 324
11.3 示例:处理ArithmeticException异常和InputMismatchException 异常 326
11.4 何时使用异常处理 330
11.5 Java异常层次 330
11.6 finally语句块 332
11.7 栈解退和从异常获得信息 336
11.8 链式异常 338
11.9 声明新的异常类型 339
11.10 前置条件和后置条件 340
11.11 断言 340
11.12 try-with-resources:自动释放资源 341
11.13 小结 342
总结 343
自测题 345
自测题答案 345
练习题 346
第12章 JavaFX GUI1 347
12.1 简介 347
12.2 JavaFX Scene Builder 348
12.3 JavaFX程序窗口的结构 349
12.4 Welcome程序显示文本和图像 350
12.5 Tip Calculator程序事件处理 353
12.6 后续有关JavaFX章节中的主题 365
12.7 小结 365
总结 366
自测题 369
自测题答案 370
练习题 370
挑战题 370
第13章 JavaFX GUI2 372
13.1 简介 372
13.2 在场景图中布局节点 373
13.3 Painter程序:RadioButton、鼠标事件和形体 374
13.4 Color Chooser程序:属性绑定和属性监听器 381
13.5 Cover Viewer程序:数据驱动的GUI及JavaFX集合 386
13.6 Cover Viewer程序:定制ListView单元格 389
13.7 其他JavaFX功能 392
13.8 JavaFX 9:Java SE 9 JavaFX的更新 394
13.9 小结 395
总结 395
自测题 400
自测题答案 401
练习题 401
第14章 字符串、字符与正则表达式 402
14.1 简介 402
14.2 字符和字符串基础 403
14.3 String类 403
14.4 StringBuilder类 413
14.5 Character类 418
14.6 标记化String 421
14.7 正则表达式及Pattern类和Matcher类 422
14.8 小结 427
总结 428
自测题 430
自测题答案 431
练习题 431
拓展内容:字符串操作练习题 432
拓展内容:处理字符串的挑战项目 434
挑战题 435
第15章 文件、输入输出流、NIO与XML序列化 436
15.1 简介 436
15.2 文件和流 437
15.3 使用NIO类和接口来获得文件和目录信息 438
15.4 顺序文本文件 440
15.5 XML序列化 447
15.6 FileChooser和DirectoryChooser对话框 452
15.7 选修其他的java.io类 456
15.8 小结 458
总结 458
自测题 461
自测题答案 462
练习题 462
挑战题 464
第16章 泛型集合 465
16.1 简介 465
16.2 集合概述 466
16.3 类型包装器类 467
16.4 自动装箱和自动拆箱 467
16.5 Collection接口和Collections类 467
16.6 List 468
16.7 Collections方法 473
16.8 PriorityQueue类和Queue接口 481
16.9 Set 482
16.10 Map 484
16.11 同步集合 487
16.12 不可修改集合 487
16.13 抽象实现 488
16.14 Java SE 9:用于不可变集合的便利工厂方法 488
16.15 小结 490
总结 491
自测题 493
自测题答案 493
练习题 494
第17章 lambda与流 496
17.1 简介 497
17.2 流和聚合 498
17.3 映射和lambda 500
17.4 过滤 503
17.5 元素如何在流管道中移动 504
17.6 方法引用 505
17.7 IntStream操作 507
17.8 函数式接口 510
17.9 lambda:深入探究 511
17.10 Stream<Integer>操作 512
17.11 Stream<String>操作 515
17.12 Stream<Employee>操作 516
17.13
|
內容試閱:
|
前言
欢迎使用本书,进入Java编程的世界!本书将为学生、教师和软件开发人员提供前沿的计算技术。这本书适用于相关专业的基础课程和专业课程,它们是两个主要的专业组织ACM和IEEE推荐的课程体系 ;也适用于准备Advanced PlacementAP计算机科学课程的考试 ;对于计划获取如下两个Java Standard Edition 8Java SE 8证书的人员而言,本书也非常合适 :
? Oracle Certified Associate,Java SE 8 Programmer
? Oracle Certified Professional,Java SE 8 Programmer
在阅读本书之前,可以先阅读一下业内人士对于本书的评价,它们精确地概述了本书的精髓。后面将为学生、教师及专业人士提供更多的详细信息。
本书的主要目的是,为学生在将来的高级课程和行业中所遇到的Java编程挑战做好准备。书中关注的是软件工程的最佳实践,其核心是作者独有的活代码方法live-code approach与Java语言有关的概念,是在完全可工作的数百个程序的环境下呈现的,而不是使用代码片段。这些程序都已经在Windows?、macOS?和Linux?下经过了测试。每一个完整的代码示例都伴有真实的执行结果。
新特性及更新过的特性
如下这些小节中,包含本书中新涉及的主要特性及更新过的特性:
? 灵活使用Java SE 8或Java SE 9包含Java SE 8
? 模块化结构
? 讲解基本的编程知识
? 有关Java SE 9的部分:JShell、模块化系统及其他主题
? 面向对象编程
? 涵盖JavaFXSwing GUI、图形及多媒体
? 数据结构和泛型集合
? 涉及lambda与流
? 并发性与多核处理器性能
? 数据库:JDBC与JPA
? Web应用开发和Web服务
? 选修面向对象设计案例分析
灵活使用Java SE 8或Java SE 9
为了满足不同读者的需求,本书以Java SE 8或Java SE 9分别简称为Java 8和Java 9为基础,针对学校课程和专业培训课程进行了设计。每当介绍Java 8或者Java 9中的一个特性时,都会在页边加上一个8或者9的字样如左图所示。书中关于Java 9的特性出现在可选修的章节印刷版或者在线内容中。图1和图2分别给出了本书中涉及的Java 8和Java 9的一些重要特性。
Java 8的特性
lambda和流
类型推导的改进
@FunctionalInterface注解
用于Java Collections的批量数据操作filter、map和reduce
为了支持lambda而改进的库如java.util.stream和java.util.function
日期与时间APIjava.time
并行数组排序
Java并发性API的改进
接口中的static方法和default方法
只定义一个abstract方法,且能够包含static方法和default方法的函数式接口
图1 本书讲解的一些Java 8的特性
Java 9的特性
印刷版:
讲解JShell的新的一章
_不再用作标识符
private接口方法
可以在try-with-resources语句中使用effectively final变量
涉及Stack Walking API
讲解JEP 254中的紧凑字符串
集合工厂方法
在线内容:
模块化系统
HTML5 Javadoc的改进
Matcher类的新的重载方法
CompletableFuture的改进
JavaFX 9皮肤API及其他改进
涉及:
Java 9安全改进概述
G1垃圾收集器
对象序列化安全的提升
改进的deprecation技术
图2 本书讲解的一些Java 9的特性
本书的模块化结构
本书的模块化结构有助于教师的讲解。
本书适合于各种不同级别的编程课程。第1~25章适合于核心的CS 1和CS 2课程,以及相关专业的入门性课程体系。第26~36章可用于高级课程,它们在本书的配套网站上提供。
第一部分:简介
第1章 计算机、Internet与Java简介
第2章 Java应用介绍、输入输出、运算符
第3章 类、对象、方法与String简介
第25章 JShell简介:Java SE 9中用于交互式Java的REPL
第二部分:其他的编程知识
第4章 控制语句1及赋值、与? ?运算符
第5章 控制语句2及逻辑运算符
第6章 方法:深入探究
第7章 数组与ArrayList
第14章 字符串、字符与正则表达式
第15章 文件、输入输出流、NIO与XML序列化
第三部分:面向对象编程
第8章 类与对象:深入探究
第9章 面向对象编程:继承
第10章 面向对象编程:多态和接口
第11章 异常处理:深入探究
第四部分:JavaFX GUI、图形与多媒体
第12章 JavaFX GUI1
第13章 JavaFX GUI2
第22章 JavaFX图形与多媒体
第五部分:数据结构、泛型集合、lambda与流
第16章 泛型集合
第17章 lambda与流
第18章 递归
第19章 搜索、排序与大O记法
第20章 泛型类和泛型方法:深入探究
第21章 定制泛型数据结构
第六部分:并发性与网络功能
第23章 并发性
第28章 网络功能
第七部分:数据库驱动的桌面应用开发
第24章 利用JDBC访问数据库
第29章 Java持久性APIJPA
第八部分:Web应用开发与Web服务
第30章 JavaServer Faces Web应用开发1
第31章 JavaServer Faces Web应用开发2
第32章 REST Web服务
第九部分:其他的Java 9主题
第36章 Java模块化系统与其他Java 9的特性
第十部分:选修面向对象设计
第33章 ATM案例分析1:面向对象设计与UML
第34章 ATM案例分析2:实现面向对象的设计
第十一部分:选修Swing GUI与Java二维图形
第26章 Swing GUI组件1
第27章 图形与Java 2D
第35章 Swing GUI组件2
Java简介与编程基础第一、二部分
第1~7章以一种合理的、用示例讲解的传统方式涵盖有关编程的主题。与其他多数讲解Java的教材不同,本书采用一种早期对象的方法early objects approach参见后面的面向对象编程部分。注意,前面提到过,本书第一部分包含了可选修的第25章,讲解了Java 9中新引入的JShell。并不是所有的课程都会讲解JShell。但是,如果讲解它,则会发现JShell的交互性使Java变活了,从而能够加速学习过程参见后面讲解的JShell。
有关Java 9的部分:JShell、模块化系统及其他的Java 9主题JShell位于第一部分,其他内容位于第九部分
JShell:Java 9的REPLRead-Eval-Print-Loop,读取-求值-输出循环
JShell提供了一个友好的环境,以便用户能够快速地探索、发现和体验Java语言的特性及其大量的库。JShell用REPL替代了编辑、编译、执行这个烦琐的循环。无须实现完整的程序,就可以编写JShell命令及Java代码段。输入代码段时,JShell会立即进行如下操作:
? 读取代码段
? 计算它的值
? 输出消息,以查看代码段的结果
? 为下一个代码段执行相同的过程
从第25章的大量示例和练习题中,可以看到JShell及其即时反馈是如何使学生保持注意力、提高学习效果并加快软件开发过程的。
JShell是易于使用且充满乐趣的。它有助于更快、更深入地学习Java特性,并可用来验证这些特性的工作方式。对教师而言,利用JShell能够鼓励学生深入学习,提高学习效率。作为专业人士,可以了解JShell如何帮助快速原型化主要的代码段,以及如何帮助发现和实验新的API。
本书采用模块化方法,在第25章中讲解JShell。对于这一章:
1.可随意取舍。
2.被分解成16个小节,其中的许多小节与书中前面某一章的特定主题相对应见图3。
3.大量讲解JShell功能。其中包含大量示例,需要亲自体验它们,让JShell成为你的有用工具。你会发现JShell能够带来很大的便利。
4.包含大量自测题,并且提供了答案。这些自测题可以在学习第2章和25.3节之后完成。要随时验证你的答案,这有助于快速掌握基本的JShell功能。接着,可以完成本章中其他的示例程序,从而掌握更多的JShell功能。
讲解JShell的各节 预备内容
25.3节,介绍JShell,包括启动会话、执行语句、声明变量、计算表达式的值、类型推导功能等
25.4节,探讨如何在JShell中用Scanner进行命令行输入 第2章 Java应用介绍、输入输出、运算符
25.5节,讲解如何在JShell中声明并使用类,包括如何加载包含类声明的Java源代码文件
25.6节,介绍JShell的自动补全功能,以完成类操作和JShell命令 第3章 类、对象、方法与String简介
25.7节,讲解其他的JShell自动补全功能,查看方法的参数、文档及它的重载方法
25.8节,探讨如何在JShell中声明并使用方法,包括前向引用还没有在JShell会话中存在的方法 第6章 方法:深入探究
25.9节,讲解JShel
|
|