Java高级编程(第2版)

Java高级编程(第2版)
作 者: 斯贝尔
出版社: 清华大学出版社
丛编项:
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: Java
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  本书提供作译者介绍Brett Spell,一名受人尊敬的畅销书作家,从90年代起就开始从事专业Java开发,是一名通过Sun认证的知名开发人员和架构师。Brett还是Java开发领域中久负盛名的专业杂志Java Pro的定期撰稿人和Intel Developer Services网站的专栏作家。

内容简介

既然市面上已经有众多Java相关书籍,那么再写本书的意义何在呢?首先,Java这一概念非常宽泛,其中仍有不少领域没有详细的介绍,甚至有些领域正是Java程序员们常需要使用的。另外,大型Java程序的开发需要通晓Java的各个不同方面,本书正是要起到这样的帮助作用。本书各章都有一个共同的特点,即每章都代表专业Java开发人员需要掌握的一项技术。虽然部分章节内容是J2SE(Java 2 Standard Edition)的传统技术,但J2EE(Java 2 Enterprise Edition)和Web应用程序开发的绝大部分技术都是相通的。本书不要求读者具备大量Java知识,但同样不适合无编程基础的读者。软件开发的背景知识和面向对象编程概念的基本认识有助于阅读本书。另外,由于部分技术主题涉及的内容较广,因此本书不适合作为这些主题的权威参考。有些内容相当复杂,如XML、线程和数据库编程,难以在一章内介绍完全,不过仍将为这些主题提供相当丰富的信息,足以进行这方面程序的高效开发。另外,本书介绍的部分功能是Java 1.5(也称Java 5)中新引入的,因此早期Java版本可能无法使用这些功能。不过本书将尽量标识出Java 5新版本中的特定功能,如果早期版本中无法使用这些功能,希望您不会因此感到惊讶或失望。

图书目录

第1章 Java深入介绍 1

1.1 Java体系结构 1

1.2 Java虚拟机 3

1.2.1 JVM的不同实现 4

1.2.2 JVM作为运行时执行环境 4

1.2.3 JVM运行时数据区 5

1.2.4 垃圾收集器 7

1.2.5 JVM:加载、链接和初始化 7

1.2.6 执行字节码 9

1.3 Java类文件格式 11

1.4 Java编程语言与API 13

1.4.1 Java编程语言 13

1.4.2 Java API 13

1.5 JVM配套的Java实用工具 14

1.5.1 Java编译器 14

1.5.2 Java解释器 15

1.5.3 Java类反汇编程序 16

1.6 小结 16

第2章 库、类和方法的设计 19

2.1 库的设计 19

2.2 类的设计 20

2.2.1 松耦合 21

2.2.2 强聚合 35

2.2.3 封装 38

2.2.4 不变对象与不变字段 41

2.2.5 重写对象方法 42

2.3 方法设计 48

2.3.1 参数传递 49

2.3.2 方法命名 52

2.3.3 最小化代码重复 53

2.3.4 变量参数 55

2.3.5 使用异常 57

2.3.6 断言 75

2.3.7 枚举 77

2.4 小结 79

第3章 在应用程序中使用线程 81

3.1 Java线程 81

3.2 创建线程 83

3.3 使用线程的缺点 85

3.3.1 初始启动变慢 85

3.3.2 资源利用 85

3.3.3 复杂性增加 85

3.4 线程管理 87

3.5 共享资源的使用同步 91

3.5.1 同步方法和同步代码块的嵌套调用 94

3.5.2 同步代码块与同步方法 94

3.5.3 死锁 95

3.6 线程优先级 98

3.7 监控程序线程 99

3.8 在应用程序中加入线程 101

3.9 线程控制 109

3.9.1 线程启动 111

3.9.2 线程休眠 112

3.9.3 线程挂起 116

3.9.4 线程恢复 119

3.9.5 线程停止 120

3.9.6 线程中断 121

3.10 完成DownloadManager 123

3.11 线程中的过时方法 126

3.12 DownloadFiles类 127

3.13 未捕捉的异常 132

3.14 自愿放弃处理器 133

3.15 并发工具 135

3.16 小结 136

第4章 集合 137

4.1 集合演变 139

4.1.1 Java 2/Java 1.2 139

4.1.2 Java 5/Java 1.5 140

4.2 集合类与接口 140

4.2.1 Collection接口 141

4.2.2 List 145

4.2.3 ListIterator 148

4.2.4 ArrayList 149

4.2.5 LinkedList 150

4.2.6 Vector 151

4.2.7 Stack 151

4.2.8 Set 152

4.2.9 HashSet 155

4.2.10 构造函数 155

4.2.11 LinkedHashSet 155

4.2.12 TreeSet 155

4.2.13 EnumSet 159

4.2.14 Map 160

4.2.15 HashMap 162

4.2.16 LinkedHashMap 163

4.2.17 TreeMap 163

4.2.18 EnumMap 163

4.2.19 IdentityHashMap 163

4.2.20 WeakHashMap 164

4.2.21 ConcurrentHashMap 165

4.2.22 Queue 165

4.2.23 PriorityQueue 166

4.2.24 PriorityBlockingQueue 166

4.2.25 ArrayBlockingQueue 166

4.2.26 LinkedBlockingQueue 166

4.2.27 ConcurrentLinkedQueue 167

4.2.28 SynchronousQueue 167

4.2.29 DelayQueue 167

4.3 集合使用技巧 168

4.3.1 浅副本和深副本 169

4.3.2 引用接口代替引用实现 169

4.4 小结 170

第5章 布局管理器 171

5.1 布局管理器与GUI构造 171

5.2 CardLayout 173

5.2.1 构造CardLayout 173

5.2.2 子组件尺寸 174

5.2.3 子组件位置 174

5.2.4 尺寸调整 175

5.2.5 容器尺寸 175

5.3 FlowLayout 175

5.3.1 构造FlowLayout 175

5.3.2 约束 175

5.3.3 子组件尺寸 176

5.3.4 子组件位置 176

5.3.5 尺寸调整 178

5.3.6 容器尺寸 178

5.4 GridLayout 179

5.4.1 构造GridLayout 180

5.4.2 约束 182

5.4.3 子组件尺寸 182

5.4.4 子组件位置 182

5.4.5 尺寸调整 183

5.4.6 容器尺寸 183

5.5 BorderLayout 183

5.5.1 构造BorderLayout 185

5.5.2 约束 185

5.5.3 子组件尺寸 185

5.5.4 子组件位置 186

5.5.5 尺寸调整 186

5.5.6 容器尺寸 187

5.6 GridBagLayout 187

5.6.1 构造GridBagLayout 190

5.6.2 约束 190

5.6.3 子组件尺寸 210

5.6.4 子组件位置 211

5.6.5 尺寸变化 211

5.6.6 容器尺寸 212

5.7 BoxLayout 212

5.7.1 对齐值、上升和下降 212

5.7.2 构造BoxLayout 216

5.7.3 约束 216

5.7.4 子组件尺寸 216

5.7.5 子组件位置 218

5.7.6 尺寸缩放 218

5.7.7 容器尺寸 219

5.7.8 Swing中的Box类 219

5.8 布局管理器的使用准则 222

5.8.1 组合使用布局管理器 222

5.8.2 不使用布局管理器的绝对定位 224

5.8.3 不可见组件 224

5.8.4 添加组件时指定索引 225

5.9 创建自定义布局管理器 227

5.9.1 LayoutManager2接口方法 228

5.9.2 LayoutManager方法 230

5.9.3 使用自定义布局管理器 234

5.10 小结 235

第6章 使用Swing的JTable组件 237

6.1 数据模型 238

6.2 使用含有JTable组件的JScrollPane类 242

6.3 JTable组件的面向列设计 245

6.4 调整表格尺寸 245

6.5 调整列的尺寸 246

6.5.1 AUTO_RESIZE_OFF 246

6.5.2 AUTO_RESIZE_NEXT_COLUMN 246

6.5.3 AUTO_RESIZE_SUBSEQUENT_COLUMNS 247

6.5.4 AUTO_RESIZE_LAST_COLUMN 247

6.5.5 AUTO_RESIZE_ALL_COLUMNS 248

6.6 单元格绘制 248

6.6.1 创建定制的绘制器 249

6.6.2 JTable组件的默认绘制器 253

6.7 编辑表格单元格 255

6.8 表格选项设置 261

6.8.1 行、列、以及单元格选项模式的结合 262

6.8.2 列表选项模式 262

6.8.3 选项模式的结合 263

6.8.4 用编程方式设置选项 266

6.9 表格的标题 267

6.9.1 绘制标题 267

6.9.2 工具提示及绘制器的重新使用 269

6.9.3 JTableHeader 270

6.9.4 创建行标题 275

6.10 对表格按行进行排序 279

6.10.1 对列选项进行动态排序 281

6.10.2 使用比较 285

6.11 添加和删除表格行 287

6.12 显示特定的表格行 289

6.13 小结 290

第7章 使用Swing的JTree组件 291

7.1 JTree术语简介 292

7.2 创建JTree实例 293

7.2.1 TreeModel 296

7.2.2 创建树节点 297

7.3 TreePath类 309

7.4 TreeModelListener接口 311

7.4.1 treeNodesChanged()方法 311

7.4.2 treeNodesInserted()方法 311

7.4.3 treeNodesRemoved()方法 311

7.4.4 treeStructureChanged()方法 311

7.5 TreeModelEvent类 311

7.5.1 getTreePath()和getPath()方法 312

7.5.2 getChildren()方法 312

7.5.3 getChildIndices()方法 312

7.6 DefaultTreeModel类 312

7.7 绘制树节点 314

7.8 编辑树的节点 320

7.8.1 DefaultTreeCellEditor和DefaultCellEditor类 323

7.8.2 创建自定义编辑器 324

7.8.3 限制编辑某些节点 326

7.9 定制分支节点句柄 327

7.10 线型与Java或Metal 外观 328

7.11 节点选择 330

7.11.1 选择方式 330

7.11.2 TreeSelectionListener类 332

7.11.3 TreeSelectionEvent 333

7.11.4 JTree中的选择方法 333

7.12 折叠和展开节点 335

7.13 小结 338

第8章 添加剪切和粘贴功能 350

8.1 剪贴板:剪切和复制数据的存储位置 340

8.1.1 系统剪贴板 340

8.1.2 剪贴板 341

8.1.3 Transferable 341

8.1.4 ClipboardOwner实现 342

8.1.5 DataFlavor的使用 343

8.2 存取与检索串行化的Java对象 345

8.3 在Java程序和本地应用程序之间传输数据 357

8.4 编写任意的二进制数据 357

8.5 小结 362

第9章 添加拖放功能 363

9.1 拖放操作的类型 363

9.2 预定义光标 364

9.3 从本地应用程序执行文件选择释放 365

9.3.1 添加对释放操作的支持 365

9.3.2 添加对拖动操作的支持 374

9.4 执行本地传输 385

9.4.1 本地对象DataFlavor的概念 386

9.4.2 处理引用传输 387

9.5 执行链接/引用操作 389

9.6 在Java程序和本地应用程序之间传输 390

9.7 传输文本数据 392

9.7.1 在Java程序和本地应用程序之间传输文本数据 392

9.7.2 为文本数据创建一个新的Transferable 394

9.8 小结 396

第10章 打印 397

10.1 定位打印服务 398

10.1.1 DocFlavor 399

10.1.2 选择正确的打印机 401

10.1.3 AttributeSet 402

10.1.4 Attribute类 402

10.1.5 Attribute Roles 403

10.1.6 接口和实现 403

10.1.7 用户界面的打印机选择 406

10.2 创建打印任务 407

10.3 定义打印文档 407

10.4 初始化打印 408

10.5 监控打印任务 408

10.5.1 监控属性变化 409

10.5.2 取消打印任务 410

10.6 Service-Formatted打印的概念 411

10.6.1 支持类 412

10.6.2 打印应用程序示例 416

10.7 小结 422

第11章 JDBC介绍 423

11.1 SQL标准和JDBC版本 424

11.2 JDBC驱动器 425

11.3 获得数据库连接 428

11.3.1 JDBC的URL格式 428

11.3.2 连接 429

11.3.3 通过数据源获得连接(2.x选择包) 429

11.3.4 DatabaseMetaData接口 432

11.4 Statement 440

11.4.1 executeUpdata()方法 441

11.4.2 executeQuery()方法 441

11.4.3 execute()方法 441

11.4.4 addBatch()和executeBatch()方法 442

11.4.5 PreparedStatement类 442

11.4.6 CallableStatement 445

11.4.7 ParameterMetaData类 446

11.5 JDBC数据类型 447

11.5.1 ARRAY 448

11.5.2 BLOB、CLOB 449

11.5.3 DATALINK 449

11.5.4 DATE、TIME、TIMESTAMP 450

11.5.5 DISTINCT 450

11.5.6 STRUCT 450

11.5.7 REF 451

11.5.8 JAVA_OBJECT 451

11.5.9 OTHER 451

11.6 ResultSet类 451

11.6.1 单向前与滚动(滚动类型) 452

11.6.2 只读与可更新(并发模式) 452

11.6.3 更新敏感性 452

11.6.4 Holdability 453

11.6.5 选择ResultSet属性 453

11.6.6 使用ResultSet 454

11.7 ResultSetMetaData 458

11.8 RowSet 459

11.9 事务 460

11.9.1 保存点 463

11.9.2 只读事务 464

11.9.3 分布式事务 466

11.10 连接池 466

11.11 错误和警告 468

11.11.1 SQLException 468

11.11.2 SQLWarning 471

11.12 调试功能 472

11.13 释放资源 473

11.14 小结 473

第12章 应用程序国际化 475

12.1 地区 476

12.2 资源绑定 477

12.3 区分地区格式与分析 483

12.3.1 日期的格式化和分析 484

12.3.2 时间的格式化及分析 486

12.3.3 数值的格式化及分析 487

12.4 MessageFormat 489

12.4.1 指定地区 491

12.4.2 指定格式化对象 492

12.5 ChoiceFormat 493

12.6 分析文本数据 495

12.7 文本比较与排序 501

12.7.1 Collator强度 502

12.7.2 分解模式 503

12.8 应用程序国际化 504

12.9 运行时修改Locale选项 515

12.10 native2ascii 522

12.11 小结 523

第13章 XML的使用 525

13.1 XML与HTML 526

13.1.1 描述数据 527

13.1.2 形式合理的文档 528

13.2 何时及为何使用XML 531

13.3 创建XML文档 532

13.3.1 root元素 533

13.3.2 XML文档的组成部分 534

13.4 分析及有效性 535

13.4.1 使用JAXP中的DOM实现进行分析 535

13.4.2 全面研究DOM文档 550

13.4.3 编辑DOM文档 555

13.5 转换XML文档 561

13.6 小结 569

第14章 添加注解 571

14.1 注解的使用 572

14.1.1 重写 574

14.1.2 SuppressWarnings注解 575

14.2 创建定制注解 579

14.2.1 Target注解 581

14.2.2 Retention注解 582

14.2.3 Documented注解 584

14.2.4 Inherited注解 585

14.3 替换外部元数据 587

14.4 注解处理工具的使用 590

14.4.1 AnnotationProcessorFactory接口 590

14.4.2 Declaration接口 593

14.4.3 产生 Side文件 595

14.5 小结 597