书籍详情

Absolute Java中文版(第6版 双色)

Absolute Java中文版(第6版 双色)

作者:[美] Walter Savitch(沃尔特·萨维奇),Kenrick Mock(肯里克·莫克) 著;师蓉 译

出版社:电子工业出版社

出版时间:2018-01-01

ISBN:9787121328664

定价:¥268.00

购买这本书可以去
内容简介
  本书侧重于面向对象设计,通过浅显易懂的语言和代码,很好地平衡了完整实例和解释性讨论,并围绕着Java 语言的特性全面透彻地介绍诸多编程技术。书中全面介绍了Java 语言已经实现的封装、继承和多态性技术,并在介绍Swing GUI 的时候提及了事件驱动的编程,在介绍UML 和模式的同时进一步介绍了OOP。本书每节后都设计了相应的练习题,每章后都有针对本章内容的编程项目。本书不仅适合初学者使用,还可以作为使用Java 的后续计算机科学课程的参考书。
作者简介
  Walter John Savitch(生于1943年2月21日)由于发现了复杂性类NL(非确定型对数空间)、以及定义NSPACE和DSPACE复杂性类之间关系的Savitch定理而被人熟知。他为建立复杂性类所做的工作有助于我们创建执行非确定性和概率推理的背景。他还在自然语言处理和数学语言学领域做了大量的工作。他一直专注于计算机计算,因为它在10年前就已经被应用到遗传学和生物学。除了在理论计算机科学上所做的工作,Savitch还编著了很多关于学习使用C/C++、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
陷阱:行终止符'\'的处理 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<T> 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<T>和Vector<T>之间的区别 741
集合框架的非参数化版本★ 742
陷阱:省略<T> 742
16.2 Map映射 742
具体的Map类 744
16.3 迭代器 748
迭代器的概念 748
Iterator<T>接口 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,读者可下载阅读。
猜您喜欢

读书导航