《Java完美编程 第3版》PDF下载

  • 购买积分:22 如何计算积分?
  • 作  者:(美)萨维奇(Savitch,W.)著;施平安,李牧译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2008
  • ISBN:9787302176336
  • 页数:815 页
图书介绍:本书侧重于面向对象设计,通过浅显易懂的语言和代码,很好地平衡了完整实例和解释性讨论,并围绕Java语言的特征全面、透彻地介绍多编程技术。本书不仅可作为高等院校程序设计课程的入门教材,还可作为使用Java的后续计算机科学课程的参考书。

第1章 Java入门 1

引言 2

前导知识 2

1.1 Java简介 2

1.1.1 Java语言的起源(选读) 2

1.1.2 对象和方法 3

1.1.3 applet(选读) 4

1.1.4 Java应用程序实例 4

自测题 6

1.1.5 字节码和Java虚拟机 6

1.1.6 类装载器(选读) 8

1.1.7 编译一个Java程序或类 8

1.1.8 运行一个Java程序 8

自测题 10

1.2 表达式和赋值语句 10

1.2.1 标识符 10

1.2.2 变量 11

1.2.3 赋值语句 12

1.2.4 再论赋值语句(选读) 14

自测题 15

1.2.5 赋值兼容性 15

1.2.6 常量 16

1.2.7 算术运算符和表达式 17

1.2.8 括号和优先规则(选读) 18

1.2.9 整数和浮点数除法 19

自测题 21

1.2.10 类型转换 22

1.2.11 自增运算符和自减运算符 22

自测题 24

1.3 String类 24

1.3.1 字符串常量和变量 25

1.3.2 字符串连接 25

1.3.3 类 26

1.3.4 String类的方法 27

1.3.5 转义序列 31

1.3.6 字符串处理 32

1.3.7 Unicode字符集(选读) 32

自测题 33

1.4 程序风格 33

1.4.1 命名常量 34

1.4.2 Java拼写约定 35

1.4.3 注释 36

1.4.4 缩进 37

自测题 37

小结 38

自测题参考答案 38

编程项目 40

第2章 控制台输入和输出 43

引言 44

前导知识 44

2.1 屏幕输出 44

2.1.1 System.out.println 44

自测题 46

2.1.2 用printf格式化输出 46

自测题 50

2.1.3 使用NumberFormat格式化金额 51

2.1.4 导入包和类 53

自测题 54

2.1.5 DecimalFormat类(选读) 54

2.2 使用Scanner类的控制台输入 57

2.2.1 Scanner类 57

2.2.2 空字符串 62

自测题 63

2.2.3 其他输入分隔符 63

自测题 64

小结 66

自测题参考答案 66

编程项目 67

第3章 控制流 69

引言 70

前导知识 70

3.1 分支结构 70

3.1.1 if-else语句 70

3.1.2 省略else 71

3.1.3 复合语句 71

3.1.4 嵌套语句 73

自测题 73

3.1.5 多分支if-else语句 73

自测题 75

3.1.6 switch语句 75

自测题 78

3.1.7 条件运算符(选读) 79

3.2 布尔表达式 79

3.2.1 简单的布尔表达式 79

3.2.2 字典顺序和字母顺序 81

自测题 83

3.2.3 构造布尔表达式 83

自测题 84

3.2.4 布尔表达式计算 85

3.2.5 短路求值与完整求值 87

3.2.6 优先级和结合规则 88

自测题 93

3.3 循环 94

3.3.1 while语句和do-while语句 94

3.3.2 算法和伪码 96

自测题 97

3.3.3 for语句 98

3.3.4 for语句中的逗号 100

3.3.5 嵌套循环 103

自测题 103

3.3.6 break语句和continue语句(选读) 105

3.3.7 exit语句 106

3.4 调试 106

3.4.1 循环bug 106

3.4.2 跟踪变量 107

3.4.3 常规调试技术 108

3.4.4 预防性编码 111

3.4.5 断言检查(选读) 112

自测题 114

小结 115

自测题参考答案 115

编程项目 118

第4章 类的定义(Ⅰ) 121

引言 122

前导知识 122

4.1 类的定义 122

4.1.1 实例变量和方法 124

自测题 126

4.1.2 再论方法 126

自测题 130

4.1.3 局部变量 131

4.1.4 代码块 131

自测题 132

4.1.5 原语类型的参数 132

自测题 137

4.1.6 类参数的简单情况 137

4.1.7 this参数 137

自测题 139

4.1.8 返回布尔值的方法 139

4.1.9 equals和toString方法 141

4.1.10 递归方法 143

自测题 144

4.2 信息隐藏和封装 145

4.2.1 public和private修饰符 145

自测题 149

4.2.2 取值和赋值方法 149

4.2.3 前条件和后条件 152

自测题 152

4.3 重载 152

自测题 157

4.4 构造方法 158

4.4.1 构造方法定义 158

自测题 165

4.4.2 默认的变量初始化 165

4.4.3 另一种初始化实例变量的方法 165

4.4.4 StringTokenizer类(选读) 169

自测题 171

小结 172

自测题参考答案 172

编程项目 175

第5章 类的定义(Ⅱ) 179

引言 180

前导知识 180

5.1 静态方法和静态变量 180

5.1.1 静态方法 180

自测题 185

5.1.2 静态变量 185

自测题 188

5.1.3 Math类 188

自测题 191

5.1.4 包装类 191

5.1.5 自动的装箱和拆箱 192

自测题 193

5.1.6 包装类中的静态方法 193

自测题 196

5.2 引用和类参数 196

5.2.1 变量与存储器 196

5.2.2 引用 198

5.2.3 类参数 201

自测题 205

5.2.4 null常量 205

5.2.5 new运算符和匿名对象 206

自测题 208

5.3 引用的使用和滥用 209

自测题 215

5.3.1 拷贝构造方法 216

自测题 220

5.3.2 可变的类与不可变的类 220

自测题 222

5.4 包和iavadoc 222

5.4.1 包和import语句 223

5.4.2 java.lang包 223

5.4.3 包名和目录 224

5.4.4 默认包 226

5.4.5 规定编译时使用的类路径(选读) 227

5.4.6 名称冲突(选读) 227

自测题 227

5.4.7 javadoc简介(选读) 228

5.4.8 针对javadoc的类注释(选读) 228

5.4.9 运行javadoc(选读) 229

自测题 231

小结 232

自测题参考答案 232

编程项目 235

第6章 数组 239

引言 240

前导知识 240

6.1 数组概述 240

6.1.1 数组的创建和访问 240

6.1.2 length实例变量 243

6.1.3 数组初始化 244

自测题 245

6.2 数组与引用 247

6.2.1 数组是对象 247

6.2.2 数组参数 249

自测题 252

6.2.3 main方法的自变量(选读) 253

6.2.4 返回一个数组的方法 254

自测题 255

6.3 数组编程 255

6.3.1 部分填充的数组 255

自测题 257

6.3.2 “for-each”循环 262

6.3.3 参数个数不定的方法(选读) 263

自测题 265

6.3.4 数组实例变量的隐私泄露 267

自测题 268

自测题 271

6.3.5 枚举类型(选读) 271

自测题 276

6.4 多维数组 276

6.4.1 多维数组基本知识 276

6.4.2 使用length实例变量 278

自测题 278

6.4.3 不规则数组 278

6.4.4 多维数组类型的参数和返回值 279

自测题 283

小结 284

自测题参考答案 284

编程项目 289

第7章 继承 293

引言 294

前导知识 294

7.1 有关继承的基础知识 294

7.1.1 派生类 294

7.1.2 方法定义的覆盖 301

7.1.3 改变被覆盖的方法的返回类型 301

7.1.4 改变被覆盖的方法的访问权限 302

自测题 303

7.1.5 super构造方法 303

7.1.6 this构造方法 305

自测题 307

7.2 封装和继承 309

自测题 311

7.3 继承编程 315

7.3.1 访问重新定义的基类方法 315

自测题 317

7.3.2 Obiect类 317

7.3.3 定义equals的正确方法 318

自测题 322

小结 323

自测题参考答案 323

编程项目 326

第8章 多态性和抽象类 329

引言 330

前导知识 330

8.1 多态性 330

8.1.1 后绑定 330

8.1.2 final修饰符 332

自测题 336

8.1.3 toString方法的后绑定 337

8.1.4 向下类型转换和向上类型转换 339

自测题 341

8.1.5 初识clone方法 342

8.2 抽象类 346

自测题 350

小结 351

自测题参考答案 351

编程项目 352

第9章 异常处理 355

引言 356

前导知识 356

9.1 异常处理基础知识 356

9.1.1 try-throw-catch机制 360

9.1.2 异常类 363

9.1.3 标准包中的异常类 363

自测题 364

9.1 .4 定义异常类 364

自测题 370

9.1.5 多个catch块 372

自测题 374

9.2 在方法中抛出异常 375

9.2.1 在一个方法中抛出一个异常 375

9.2.2 在throws子句中声明异常 376

9.2.3 捕获或声明规则的例外情况 378

9.2.4 派生类中的throws子句 380

9.2.5 何时使用异常 380

9.2.6 事件驱动的编程 381

自测题 381

9.3 有关异常处理的其他编程技术 382

9.3.1 finally块 383

自测题 383

9.3.2 重抛异常 384

9.3.3 AssertionError类 384

9.3.4 处理Scanner类的异常 384

自测题 386

9.3.5 ArrayIndexOutofBounds-Exception 386

小结 387

自测题参考答案 387

编程项目 390

第10章 文件I/O 393

引言 394

前导知识 394

10.1 文件I/O概述 394

10.1.1 流 394

10.1.2 文本文件和二进制文件 395

自测题 395

10.2 文本文件 395

10.2.1 写入文本文件 396

10.2.2 把数据追加到文本文件 400

自测题 401

10.2.3 从文本文件中读取数据 402

10.2.4 使用Scanner类读取文本文件 402

10.2.5 用Scanner测试文本文件的结束 404

自测题 408

10.2.6 使用BufferedReader读取文本文件 408

自测题 410

10.2.7 用BufferedReader测试文本文件的结束 411

自测题 412

10.2.8 路径名 412

10.2.9 嵌套的构造方法调用 413

自测题 414

10.2.10 System.in、System.out和System.err 414

自测题 415

10.3 File类 415

自测题 418

10.4 二进制文件 418

10.4.1 将简单的数据写入二进制文件中 419

10.4.2 UTF和writeUTF 422

自测题 423

10.4.3 从二进制文件读取简单数据 423

自测题 425

10.4.4 检查二进制文件的结束 426

自测题 427

10.4.5 对象的二进制输入/输出 427

10.4.6 Serializable接口 430

10.4.7 二进制文件中的数组对象 430

自测题 432

10.5 二进制文件的随机访问 432

自测题 436

小结 437

自测题参考答案 437

编程项目 440

第11章 递归 443

引言 444

前导知识 444

11.1 递归的void方法 444

11.1.1 递归调用跟踪 446

11.1.2 深入了解递归 449

自测题 450

11.1.3 递归栈(选读) 451

11.1.4 递归与迭代 452

自测题 453

11.2 返回一个值的递归方法 453

自测题 456

11.3 递归思想 456

11.3.1 递归的设计技术 456

11.3.2 折半查找(选读) 457

11.3.3 折半查找的效率(选读) 462

自测题 463

小结 464

自测题答案 464

编程项目 467

第12章 UML和模式 469

引言 470

前导知识 470

12.1 UML 470

12.1.1 UML的发展史 471

12.1.2 UML类图 471

12.1.3 类的交互 471

12.1.4 继承图 472

12.1.5 再论UML 473

自测题 473

12.2 模式 473

12.2.1 适配器模式(选读) 474

12.2.2 模型-视图-控制器模式(选读) 474

12.2.3 排序模式的局限性 479

12.2.4 排序模式的效率(选读) 479

12.2.5 模式的形式化方法 480

自测题 480

小结 481

自测题参考答案 481

编程项目 482

第13章 接口和内部类 485

引言 486

前导知识 486

13.1 接口 486

13.1.1 接口 486

13.1.2 实现接口的抽象类 488

13.1.3 派生接口 489

自测题 489

13.1.4 Comparable接口 490

自测题 494

13.1.5 接口中已定义的常量 494

自测题 496

13.1.6 Serializable接口(选读) 497

13.1.7 Cloneable接口 497

自测题 500

13.2 内部类的简单应用 500

13.2.1 辅助类 500

自测题 504

13.2.2 内部类的.class文件 504

13.3 内部类的深入介绍 504

13.3.1 静态的内部类 505

自测题 505

13.3.2 公有的内部类 505

自测题 508

13.3.3 内部类的嵌套 508

13.3.4 内部类和继承 509

13.3.5 匿名类 509

自测题 511

小结 512

自测题参考答案 512

编程项目 515

第14章 泛型和ArrayList类 517

引言 518

前导知识 518

14.1 ArrayList类 518

14.1.1 使用ArrayList类 519

自测题 523

14.1.2 ArrayList类中的方法 523

14.1.3 for-each循环 525

自测题 527

自测题 530

14.1.4 Vector类 530

14.1.5 参数化的类和泛型 531

14.2 泛型 531

14.2.1 泛型基础知识 531

14.2.2 类型参数的限制 538

14.2.3 泛型方法(选读) 540

14.2.4 泛型类的继承(选读) 541

自测题 543

小结 544

自测题参考答案 544

编程项目 545

第15章 链式数据结构 547

引言 548

前导知识 549

15.1 Java链表 549

15.1.1 使用链表 552

自测题 555

15.1.2 内部节点类 556

自测题 558

15.1.3 链表的equals方法 562

15.2 拷贝构造方法和clone方法(选读) 563

15.2.1 简单的拷贝构造方法和clone方法(选读) 563

15.2.2 异常(选读) 565

自测题 570

15.3 迭代器 571

15.3.1 定义一个迭代器类 571

15.3.2 添加和删除节点 575

自测题 578

15.4 链表的变体 578

15.4.1 双向链表 578

自测题 585

15.4.2 栈数据结构 585

自测题 586

15.4.3 队列数据结构 586

自测题 588

15.4.4 运行时间和大O表示法 588

自测题 592

15.4.5 链表的效率 592

15.5 链式散列表 592

15.5.1 字符串的散列函数 594

15.5.2 散列表的效率 596

自测题 596

15.6 集 596

15.6.1 集的基本操作 599

15.6.2 使用链表的集的效率 600

自测题 601

15.7 树 601

15.7.1 树的属性 601

15.7.2 二叉查找树的效率(选读) 606

自测题 607

小结 608

自测题参考答案 608

编程项目 612

第16章 集合、映射和迭代器 615

引言 616

前导知识 616

16.1 集合 616

16.1.1 通配符 617

16.1.2 集合框架 618

自测题 623

16.1.3 具体的集合类 623

自测题 629

16.1.4 ArrayList〈T〉和Vector〈T〉之间的区别 629

16.1.5 集合框架的非参数化版本(选读) 629

16.2 映射 630

自测题 635

16.3 迭代器 635

16.3.1 迭代器概念 635

16.3.2 Iterator〈T〉接口 635

16.3.3 列表迭代器 638

自测题 641

小结 642

自测题参考答案 642

编程项目 643

第17章 初探Swing 647

引言 648

前导知识 648

17.1 事件驱动的编程 648

17.2 按钮、事件和其他Swing基础知识 650

自测题 654

17.2.1 按钮 654

17.2.2 操作监听器和操作事件 655

自测题 657

自测题 659

17.2.3 标签 659

17.2.4 颜色 660

自测题 662

17.3 容器和布局管理器 663

17.3.1 布局管理器 663

17.3.2 FlowLayout布局管理器 666

17.3.3 网格布局管理器 666

自测题 668

17.3.4 面板 669

17.3.5 Container类 672

自测题 674

17.3.6 模型-视图-控制器模式(选读) 674

自测题 675

17.4 菜单和按钮 675

17.4.1 菜单条、菜单和菜单项 676

17.4.2 嵌套菜单(选读) 678

17.4.3 AbstractButton类 679

17.4.4 setActionCommand方法 681

17.4.5 监听器作为内部类(选读) 682

自测题 684

17.5 文本字段和文本区域 684

17.5.1 文本区域和文本字段 684

自测题 689

17.5.2 一个Swing计算器 690

自测题 693

小结 694

自测题参考答案 694

编程项目 699

第18章 深入Swing 701

引言 702

前导知识 702

18.1 窗口监听器 702

18.1.1 dispose方法 706

18.1.2 WindowAdapter类 706

自测题 707

18.2 图标和滚动条 707

18.2.1 窗标 707

自测题 712

18.2.2 滚动条 712

自测题 716

18.3 Graphics类 718

18.3.1 图形对象的坐标系 718

18.3.2 paint方法和Graphics类 719

18.3.3 绘制椭圆形 722

18.3.4 绘制弧线 722

自测题 725

18.3.5 圆角矩形(选读) 725

18.3.6 面板的paintComponent 726

18.3.7 动作绘画和repaint 727

18.3.8 关于GUI更新的更多细节(选读) 729

18.4 颜色 729

18.4.1 规定一种绘图颜色 730

18.4.2 定义颜色 730

18.4.3 JColorChooser对话窗口 732

自测题 734

18.5 字体和drawString方法 734

18.5.1 drawString方法 734

18.5.2 字体 736

自测题 738

小结 739

自测题参考答案 739

编程项目 742

第19章 Java的发展永无止境 745

引言 746

前导知识 746

19.1 多线程 746

19.1.1 Thread.sleep 748

19.1.2 getGraphics方法 749

19.1.3 使用线程修复非响应性程序 750

19.1.4 Thread类 750

19.1.5 Runnable接口(选读) 752

自测题 754

19.2 流套接字联网 754

19.2.1 套接字 755

19.2.2 套接字和线程 757

自测题 758

19.3 JavaBean 758

19.3.1 组件模型 758

19.3.2 JavaBean模型 759

自测题 759

19.4 Java和数据库连接 759

19.4.1 SQL 760

19.4.2 JDBC 761

自测题 761

小结 762

自测题答案 762

编程项目 762

附录1 关键字 766

附录2 运算优先级和结合规则 767

附录3 Unicode字符集 768

附录4 printf的格式规范 769

附录5 类和接口小结 770