《Java语言导学 原书第5版》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(美)扎卡沃,(美)坎南,(美)盖拉多著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2015
  • ISBN:9787111503927
  • 页数:450 页
图书介绍:作为帮助读者精通Java程序设计语言的学习向导,本书清晰地介绍了面向对象的编程概念、语言基础、类和对象、接口和继承、泛型、包、数字和字符串、异常、集合等内容,同时涵盖了Java SE 7的新特性,比如NIO.2的内容等。每章的后面都有问题和练习,帮助读者巩固所学知识,学以致用。此外,本书的附录中还给出如何准备Java编程语言认证考试方面的内容。本书可作为高等院校计算机等相关专业的基础教材,也可作为编程初学者和中级程序员的参考资料。

第1章 快速入门 1

1.1 关于Java技术 1

1.1.1 Java程序语言 1

1.1.2 Java平台 2

1.1.3 Java技术的功能 3

1.1.4 Java技术的优势 3

1.2 “Hello World!”实例程序 4

1.2.1 用NetBeans IDE开发“HelloWorld!” 4

1.2.2 在Microsoft Windows中开发“Hello World!” 9

1.2.3 在Solaris和Linux中开发“Hello World!” 12

1.3 “Hello World!”实例程序剖析 14

1.3.1 源码注释 15

1.3.2 HelloWorldApp类定义 15

1.3.3 main方法 16

1.4 常见问题(及其解决方案) 16

1.4.1 编译器问题 16

1.4.2 运行时问题 18

1.5 问题和练习:快速入门 19

第2章 面向对象的编程概念 20

2.1 对象 20

2.2 类 22

2.3 继承 23

2.4 接口 23

2.5 包 24

2.6 问题和练习:面向对象的编程概念 24

第3章 语言基础 26

3.1 变量 26

3.1.1 命名 27

3.1.2 基本数据类型 27

3.1.3 数组 30

3.1.4 小结 33

3.1.5 问题和练习:变量 34

3.2 运算符 34

3.2.1 赋值运算符、算术运算符和一元运算符 35

3.2.2 等式运算符、关系运算符和条件运算符 37

3.2.3 位运算符和移位运算符 39

3.2.4 小结 39

3.2.5 问题和练习:运算符 40

3.3 表达式、语句和块 41

3.3.1 表达式 41

3.3.2 语句 42

3.3.3 块 42

3.3.4 问题和练习:表达式、语句和块 43

3.4 控制流语句 43

3.4.1 if-then语句和if-then-else语句 43

3.4.2 switch语句 44

3.4.3 while语句和do-while语句 48

3.4.4 for语句 49

3.4.5 分支语句 50

3.4.6 小结 52

3.4.7 问题和练习:控制流语句 53

第4章 类和对象 54

4.1 类 54

4.1.1 声明类 55

4.1.2 声明成员变量 56

4.1.3 定义方法 57

4.1.4 构建构造器 58

4.1.5 将消息传给方法或构造器 59

4.2 对象 62

4.2.1 创建对象 63

4.2.2 使用对象 65

4.3 类的更多细节 67

4.3.1 从方法返回值 67

4.3.2 使用this关键字 68

4.3.3 控制对类成员的访问 69

4.3.4 实例和类成员 70

4.3.5 初始化字段 73

4.3.6 小结 74

4.3.7 问题和练习:类 75

4.3.8 问题和练习:对象 76

4.4 嵌套类 76

4.4.1 为什么使用嵌套类 77

4.4.2 静态嵌套类 77

4.4.3 内部类 77

4.4.4 内部类实例 78

4.4.5 小结 79

4.4.6 问题和练习:嵌套类 79

4.5 枚举类型 80

4.5.1 问题和练习:枚举类型 82

4.6 注解 82

4.6.1 文档 82

4.6.2 编译器使用的注解 83

4.6.3 注解的处理 84

4.6.4 问题和练习:注解 85

第5章 接口与继承 86

5.1 接口 86

5.1.1 Java语言的接口 86

5.1.2 将接口用作API 87

5.1.3 接口和多重继承 87

5.1.4 定义接口 87

5.1.5 实现接口 88

5.1.6 将接口用作类型 89

5.1.7 重写接口 90

5.1.8 小结 90

5.1.9 问题和练习:接口 91

5.2 继承 91

5.2.1 Java平台中类的层次结构 91

5.2.2 继承实例 92

5.2.3 子类能做什么 93

5.2.4 超类的私有成员 93

5.2.5 转换对象 93

5.2.6 覆盖和屏蔽方法 94

5.2.7 多态性 95

5.2.8 屏蔽字段 97

5.2.9 使用super关键字 97

5.2.10 将对象用作超类 98

5.2.11 编写final类和方法 101

5.2.12 抽象方法和类 101

5.2.13 小结 103

5.2.14 问题和练习:继承 103

第6章 泛型 105

6.1 为什么用泛型 105

6.2 泛型类型 106

6.2.1 一个简单的Box类 106

6.2.2 Box类的泛型版本 106

6.2.3 类型参数命名约定 107

6.2.4 泛型类型的调用和实例化 107

6.2.5 钻石运算符 107

6.2.6 多个类型参数 108

6.2.7 参数化类型 108

6.2.8 原生类型 108

6.3 泛型方法 110

6.4 受限类型形式参数 110

6.4.1 多重限制 111

6.4.2 泛型方法和受限类型形式参数 112

6.5 泛型、继承和子类型 112

6.5.1 泛型类和子类型 113

6.6 类型推导 114

6.6.1 类型推导和泛型方法 114

6.6.2 类型推导和泛型类的实例化 115

6.6.3 类型推导与泛型类和非泛型类的泛型构造函数 115

6.7 通配符 116

6.7.1 上界通配符 116

6.7.2 无界通配符 117

6.7.3 下界通配符 118

6.7.4 通配符和子类型 118

6.7.5 通配符匹配和辅助方法 119

6.7.6 通配符使用指南 121

6.8 类型擦除 122

6.8.1 泛型类型的擦除 122

6.8.2 泛型方法的擦除 123

6.8.3 类型擦除效果和桥方法 124

6.8.4 不可具体化类型 125

6.9 泛型的局限性 128

6.9.1 不能用基本数据类型实例化泛型类型 128

6.9.2 不能创建类型参数实例 128

6.9.3 不能声明类型为“类型参数”的静态字段 128

6.9.4 对参数化类型不能用类型转换或instanceof运算符 129

6.9.5 不能创建参数化类型数组 129

6.9.6 不能创建、捕获或抛出参数化类型的对象 130

6.9.7 每次重载时其形式参数类型都被擦为相同的原生类型的方法不能重载 130

6.10 问题和练习:泛型 130

第7章 程序包 133

7.1 程序包的创建 134

7.2 程序包的命名 135

7.2.1 命名约定 135

7.3 程序包成员的使用 136

7.3.1 用完全限定名指代程序包成员 136

7.3.2 导入包成员 136

7.3.3 导入整个程序包 136

7.3.4 包的表面层次结构 137

7.3.5 命名歧义性 137

7.3.6 静态import语句 137

7.4 源文件和类文件的管理 138

7.4.1 设置CLASSPATH系统变量 139

7.5 小结 140

7.6 问题和练习:创建和使用包 140

第8章 数字和字符串 141

8.1 数字 141

8.1.1 Number类 141

8.1.2 格式化数字打印输出 143

8.1.3 其他数学运算方法 146

8.1.4 自动装箱和拆箱 149

8.1.5 小结 150

8.1.6 问题和练习:数字 151

8.2 字符 151

8.2.1 转义字符 152

8.3 字符串 153

8.3.1 创建字符串 153

8.3.2 字符串长度 153

8.3.3 字符串连接 154

8.3.4 创建格式字符串 155

8.3.5 数字和字符串之间的转换 155

8.3.6 操作字符串中的字符 157

8.3.7 比较字符串和字符串的子串 160

8.3.8 StringBuilder类 161

8.3.9 小结 164

8.3.10 问题和练习:字符和字符串 165

第9章 异常 166

9.1 什么是异常 166

9.2 捕获或指明规定 167

9.2.1 三类异常 167

9.2.2 绕过捕获或指明 168

9.3 捕获和处理异常 168

9.3.1 try块 169

9.3.2 catch块 169

9.3.3 finally块 170

9.3.4 try-with-resources语句 171

9.3.5 汇总 174

9.4 指明一个方法抛出的异常 176

9.5 如何抛出异常 176

9.5.1 throw语句 177

9.5.2 Throwable类及其子类 177

9.5.3 Error类 178

9.5.4 Exception类 178

9.5.5 链式异常 178

9.5.6 创建异常类 179

9.6 未检查异常:争议 180

9.7 异常的优点 180

9.7.1 优点1:把错误处理代码和“正规”代码分离开 181

9.7.2 优点2:根据调用栈上传错误 182

9.7.3 优点3:对错误类型进行分组和加以区分 183

9.8 小结 184

9.9 问题和练习:异常 184

第10章 基本I/O和NIO.2 186

10.1 I/O流 186

10.1.1 字节流 187

10.1.2 字符流 188

10.1.3 缓冲流 190

10.1.4 扫描和格式化 191

10.1.5 命令行I/O 195

10.1.6 数据流 197

10.1.7 对象流 198

10.2 文件I/O(以NIO.2为特征) 199

10.2.1 什么是路径(以及其他文件系统情况) 200

10.2.2 Path类 201

10.2.3 文件操作 206

10.2.4 检查文件或目录 209

10.2.5 删除文件或目录 210

10.2.6 复制文件或目录 210

10.2.7 移动文件或目录 211

10.2.8 管理元数据(文件和文件存储属性) 211

10.2.9 读取、写入和创建文件 216

10.2.10 随机存取文件 221

10.2.11 创建和读取目录 222

10.2.12 符号链接或其他方式的链接 224

10.2.13 遍历文件树 226

10.2.14 查找文件 229

10.2.15 监视目录的变化 232

10.2.16 其他有用的方法 236

10.2.17 遗留文件的I/O代码 237

10.3 小结 239

10.4 问题和练习:基本I/O和NIO.2 239

第11章 集合 240

11.1 集合简介 240

11.1.1 集合框架是什么 241

11.1.2 Java集合框架的好处 241

11.2 接口 241

11.2.1 Collection接口 243

11.2.2 遍历集合 244

11.2.3 Collection接口的批量操作 244

11.2.4 Collection接口的数组操作 245

11.2.5 Set接口 245

11.2.6 List接口 248

11.2.7 Queue接口 255

11.2.8 Map接口 257

11.2.9 对象排序 262

11.2.10 SortedSet接口 267

11.2.11 SortedMap接口 269

11.2.12 小结 270

11.2.13 问题和练习:接口 270

11.3 实现 271

11.3.1 Set实现 273

11.3.2 List实现 274

11.3.3 Map实现 274

11.3.4 Queue实现 276

11.3.5 封装实现 277

11.3.6 简单实现 278

11.3.7 小结 279

11.3.8 问题和练习:实现 280

11.4 算法 280

11.4.1 排序 280

11.4.2 混排 282

11.4.3 常规数据操作 282

11.4.4 查询 282

11.4.5 组合 283

11.4.6 查找极值 283

11.5 自定义集合实现 283

11.5.1 编写实现的原因 283

11.5.2 如何编写自定义实现 284

11.6 互操作性 285

11.6.1 兼容性 285

11.6.2 API设计 287

第12章 并发 289

12.1 进程和线程 289

12.1.1 进程 289

12.1.2 线程 290

12.2 线程对象 290

12.2.1 定义和启动一个线程 290

12.2.2 使用sleep方法暂停执行 291

12.2.3 中断 292

12.2.4 联合 293

12.2.5 SimpleThreads实例 293

12.3 同步 294

12.3.1 线程冲突 294

12.3.2 内存一致性错误 295

12.3.3 同步方法 296

12.3.4 内部锁和同步 297

12.3.5 原子访问 298

12.4 活性 298

12.4.1 死锁 299

12.4.2 饥饿和活锁 299

12.5 保护块 300

12.6 不可变对象 303

12.6.1 同步类实例 303

12.6.2 定义不可变对象的一种策略 304

12.7 高级并发对象 305

12.7.1 锁对象 305

12.7.2 执行器 307

12.7.3 并发集合 311

12.7.4 原子变量 311

12.7.5 并发随机数 312

12.8 问题和练习:并发 313

第13章 正则表达式 314

13.1 简介 315

13.1.1 什么是正则表达式 315

13.1.2 包中的正则表达式如何表示 315

13.2 测试工具 315

13.3 字符串文字 316

13.3.1 元字符 317

13.4 字符类 317

13.4.1 简单类 318

13.5 预定义字符类 320

13.6 量词 322

13.6.1 零长度匹配 323

13.6.2 捕捉组和拥有量词的字符类 325

13.6.3 贪婪型、勉强型和占有型量词之间的区别 325

13.7 捕捉组 326

13.7.1 编号 326

13.7.2 反向引用 327

13.8 边界匹配器 327

13.9 模式类方法 329

13.9.1 使用标记创建模式 329

13.9.2 嵌套标记表达式 330

13.9.3 使用matches (String,CharSequence)方法 331

13.9.4 使用split (String)方法 331

13.9.5 其他实用方法 332

13.9.6 java.lang.String中模式方法的等价 332

13.10 匹配类方法 332

13.10.1 索引方法 332

13.10.2 学习方法 333

13.10.3 替换方法 333

13.10.4 使用start和end方法 333

13.10.5 使用matches和lookingAt方法 334

13.10.6 使用replaceFirst (String)和replaceAll (String) 335

13.10.7 使用appendReplacement(StringBuffer, String)和appendTail(StringBuffer) 336

13.10.8 Matcher方法在j ava.lang.String中的等价 336

13.11 模式语法异常类方法 336

13.12 Unicode支持 338

13.12.1 匹配特定代码点 338

13.12.2 Unicode字符属性 338

13.13 附加资源 338

13.14 问题和练习:正则表达式 339

第14章 平台环境 340

14.1 配置工具 340

14.1.1 属性 340

14.1.2 命令行参数 343

14.1.3 环境变量 344

14.1.4 其他配置工具 345

14.2 系统工具 345

14.2.1 命令行I/O对象 345

14.2.2 系统属性 346

14.2.3 安全管理器 348

14.2.4 系统的其他方法 349

14.3 路径和类路径 349

14.3.1 更新PATH环境变量(Microsoft Windows) 349

14.3.2 更新PATH变量(Solaris和Linux) 351

14.3.3 检查CLASSPATH变量(所有平台) 351

14.4 问题和练习:平台环境 352

第15章 JAR文件 353

15.1 JAR文件使用入门 353

15.1.1 创建JAR文件 354

15.1.2 查看JAR文件内容 356

15.1.3 抽取JAR文件内容 357

15.1.4 更新JAR文件 358

15.1.5 运行打包为JAR的软件 359

15.2 清单文件使用入门 360

15.2.1 理解默认的清单文件 361

15.2.2 修改清单文件 361

15.2.3 设置应用程序的入口点 362

15.2.4 将类文件加入JAR文件的类路径 363

15.2.5 设置包版本信息 363

15.2.6 用JAR文件封装包 364

15.2.7 封装JAR文件 365

15.3 JAR文件的签名和验证 365

15.3.1 理解签名和验证 365

15.3.2 对JAR文件签名 367

15.3.3 验证签名的JAR文件 369

15.4 使用JAR相关API 369

15.4.1 实例:JarRunner应用 369

15.5 问题:JAR文件 373

第16章 Java Web Start 374

16.1 开发Java Web Start应用程序 375

16.1.1 创建顶层JPanel类 375

16.1.2 创建应用程序 376

16.1.3 从最后部署机制中分离出核心方法的好处 376

16.1.4 获取资源 376

16.2 部署Java Web Start应用 377

16.2.1 设置Web服务器 378

16.3 显示自定义的加载进度指示器 378

16.3.1 开发自定义的加载进度指示器 378

16.3.2 为Java Web Start应用指定自定义的加载进度指示器 380

16.4 运行Java Web Start应用 381

16.4.1 通过浏览器运行Java Web Start应用 381

16.4.2 通过Java Cache Viewer运行Java Web Start应用 381

16.4.3 从桌面运行Java Web Start应用 381

16.5 Java Web Start与安全 382

16.5.1 动态下载HTTPS认证 382

16.6 Java Web Start常见问题 382

16.7 问题和练习:Java Web Start 383

第17章 applet 384

17.1 开始使用applet 384

17.1.1 定义Applet类的子类 385

17.1.2 Milestones方法 385

17.1.3 applet的生命周期 386

17.1.4 applet执行环境 387

17.1.5 开发applet 388

17.1.6 部署applet 390

17.2 applet更多功能 392

17.2.1 查找和加载数据文件 392

17.2.2 定义和使用applet参数 392

17.2.3 显示简短的状态字符串 394

17.2.4 在浏览器中显示文档 395

17.2.5 从applet调用JavaScript代码 396

17.2.6 从JavaScript代码中调用applet方法 397

17.2.7 通过事件句柄处理初始化状态 400

17.2.8 操纵applet网页的DOM 401

17.3 显示自定义的加载进度指示器 402

17.3.1 开发自定义的加载进度指示器 402

17.3.2 为applet指定加载进度指示器 405

17.3.3 将加载进度指示器和applet用户界面结合 405

17.3.4 将诊断写入标准输出和错误流 405

17.3.5 开发可拖动的applet 406

17.3.6 和其他applet交互 408

17.3.7 与服务器端应用交互 409

17.3.8 applet能做什么和不能做什么 410

17.4 applet常见问题及解决方案 411

17.5 问题和练习:applet 412

第18章 Java富互联网应用系统 413

18.1 设置可信参数和安全属性 413

18.1.1 系统属性 414

18.2 JNLP API 415

18.2.1 通过JNLP API获取客户端 416

18.3 cookie 418

18.3.1 cookie的类型 419

18.3.2 RIA中的cookie支持 419

18.3.3 获取cookie 419

18.4 自定义加载体验 420

18.5 RIA中的安全 421

18.6 问题和练习:Java富互联网应用系统 421

第19章 深入理解部署 423

19.1 部署工具 423

19.1.1 部署工具脚本所在位置 423

19.1.2 部署applet 424

19.1.3 部署Java Web Start应用 427

19.1.4 检查客户端的JRE软件版本 428

19.2 Java网络加载协议 429

19.2.1 JNLP文件结构 429

19.3 部署的最佳实践 433

19.3.1 减少下载时间 433

19.3.2 避免不必要的更新检查 435

19.3.3 只有必要时才签名JAR文件 436

19.3.4 确保JRE软件存在 436

19.4 问题和练习:深入理解部署 437

附录 Java程序语言认证考试复习大纲 438