内容简介
本书侧重于面向对象设计,通过浅显易懂的语言和代码,很好地平衡了完整实例和解释性讨论,并围绕着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
示例:一个银行账户类
Absolute Java中文版(第6版)(双色) 电子书 下载 mobi epub pdf txt