《Java 8编程参考官方教程 第9版》PDF下载

  • 购买积分:31 如何计算积分?
  • 作  者:(美)施密特著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302387404
  • 页数:1255 页
图书介绍:本书内容丰富,针对Java SE8进行了全面更新,涵盖了Java语言的方方面面,包括语法、关键字以及基本的编程原则。此外,本书还介绍了Java API库的关键元素,分析了JavaBean、servlet、applet以及Swing,并通过真实的案例演示了Java在编程中的实际应用。在讲解的过程中,书中贯穿了Java SE8的最新特性,例如lambda表达式、stream库、使用JavaFX进行GUI编程等。

第Ⅰ部分 Java语言 3

第1章 Java的历史和演变 3

1.1 Java的家世 4

1.1.1 现代编程语言的诞生:C语言 4

1.1.2 C++:下一个阶段 5

1.1.3 Java出现的时机已经成熟 6

1.2 Java的诞生 6

1.3 Java改变Internet的方式 8

1.3.1 Java applet 8

1.3.2 安全性 8

1.3.3 可移植性 8

1.4 Java的魔力:字节码 9

1.5 servlet:服务器端的Java 10

1.6 Java的关键特性 10

1.6.1 简单性 10

1.6.2 面向对象 11

1.6.3 健壮性 11

1.6.4 多线程 11

1.6.5 体系结构中立 11

1.6.6 解释执行和高性能 12

1.6.7 分布式 12

1.6.8 动态性 12

1.7 Java的演变历程 12

1.8 Java SE 8 14

1.9 文化革新 15

第2章 Java综述 17

2.1 面向对象编程 17

2.1.1 两种范式 18

2.1.2 抽象 18

2.1.3 OOP三原则 19

2.2 第一个简单程序 23

2.2.1 输入程序 23

2.2.2 编译程序 23

2.2.3 深入分析第一个示例程序 24

2.3 第二个简短程序 26

2.4 两种控制语句 27

2.4.1 if语句 27

2.4.2 for循环 29

2.5 使用代码块 30

2.6 词汇问题 31

2.6.1 空白符 32

2.6.2 标识符 32

2.6.3 字面值 32

2.6.4 注释 32

2.6.5 分隔符 32

2.6.6 Java关键字 33

2.7 Java类库 34

第3章 数据类型、变量和数组 35

3.1 Java是强类型化的语言 35

3.2 基本类型 36

3.3 整型 36

3.3.1 byte 37

3.3.2 short 37

3.3.3 int 37

3.3.4 long 37

3.4 浮点型 38

3.4.1 float 38

3.4.2 double 39

3.5 字符型 39

3.6 布尔型 41

3.7 深入分析字面值 42

3.7.1 整型字面值 42

3.7.2 浮点型字面值 43

3.7.3 布尔型字面值 43

3.7.4 字符型字面值 43

3.7.5 字符串字面值 44

3.8 变量 45

3.8.1 变量的声明 45

3.8.2 动态初始化 45

3.8.3 变量的作用域和生存期 46

3.9 类型转换和强制类型转换 48

3.9.1 Java的自动类型转换 48

3.9.2 强制转换不兼容的类型 48

3.10 表达式中的自动类型提升 50

3.11 数组 51

3.11.1 一维数组 51

3.11.2 多维数组 54

3.11.3 另一种数组声明语法 58

3.12 关于字符串的一些说明 58

3.13 向C/C++程序员提供指针方面的说明 59

第4章 运算符 61

4.1 算术运算符 61

4.1.1 基本算术运算符 62

4.1.2 求模运算符 63

4.1.3 算术与赋值复合运算符 64

4.1.4 自增与自减运算符 65

4.2 位运算符 66

4.2.1 位逻辑运算符 67

4.2.2 左移 70

4.2.3 右移 71

4.2.4 无符号右移 72

4.2.5 位运算符与赋值的组合 74

4.3 关系运算符 74

4.4 布尔逻辑运算符 75

4.5 赋值运算符 77

4.6 “?”运算符 78

4.7 运算符的优先级 79

4.8 使用圆括号 80

第5章 控制语句 81

5.1 Java的选择语句 81

5.1.1 if语句 82

5.1.2 switch语句 84

5.2 迭代语句 89

5.2.1 while语句 89

5.2.2 do-while语句 91

5.2.3 for语句 93

5.2.4 for循环的for-each版本 97

5.2.5 嵌套的循环 102

5.3 跳转语句 103

5.3.1 使用break语句 103

5.3.2 使用continue语句 107

5.3.3 return语句 108

第6章 类 111

6.1 类的基础知识 112

6.1.1 类的一般形式 112

6.1.2 一个简单的类 113

6.2 声明对象 115

6.3 为对象引用变量赋值 117

6.4 方法 118

6.4.1 为Box类添加方法 118

6.4.2 返回值 120

6.4.3 添加带参数的方法 121

6.5 构造函数 123

6.6 this关键字 126

6.7 垃圾回收 127

6.8 finalize()方法 128

6.9 堆栈类 128

第7章 方法和类的深入分析 131

7.1 重载方法 131

7.2 将对象用作参数 136

7.3 参数传递的深入分析 139

7.4 返回对象 141

7.5 递归 142

7.6 访问控制 144

7.7 理解static 147

7.8 final介绍 149

7.9 重新审视数组 149

7.10 嵌套类和内部类 151

7.11 String类介绍 154

7.12 使用命令行参数 156

7.13 varargs:可变长度参数 157

7.13.1 重载varargs方法 160

7.13.2 varargs方法与模糊性 161

第8章 继承 165

8.1 继承的基础知识 165

8.1.1 成员访问与继承 167

8.1.2 一个更实际的例子 168

8.1.3 超类变量可以引用子类对象 170

8.2 使用super关键字 171

8.2.1 使用super调用超类的构造函数 171

8.2.2 super的另一种用法 175

8.3 创建多级继承层次 176

8.4 构造函数的调用时机 179

8.5 方法重写 180

8.6 动态方法调度 183

8.6.1 重写方法的目的 184

8.6.2 应用方法重写 185

8.7 使用抽象类 186

8.8 在继承中使用final关键字 189

8.8.1 使用final关键字阻止重写 189

8.8.2 使用final关键字阻止继承 190

8.9 Object类 190

第9章 包和接口 193

9.1 包 194

9.1.1 定义包 194

9.1.2 包查找与CLASSPATH 195

9.1.3 一个简短的包示例 195

9.2 访问保护 196

9.3 导入包 200

9.4 接口 202

9.4.1 定义接口 202

9.4.2 实现接口 203

9.4.3 嵌套接口 206

9.4.4 应用接口 207

9.4.5 接口中的变量 210

9.4.6 接口可以扩展 212

9.5 默认接口方法 213

9.5.1 默认方法的基础知识 214

9.5.2 一个更加实用的例子 215

9.5.3 多级继承的问题 216

9.6 在接口中使用静态方法 217

9.7 关于包和接口的最后说明 218

第10章 异常处理 219

10.1 异常处理的基础知识 219

10.2 异常类型 220

10.3 未捕获的异常 221

10.4 使用try和catch 222

10.5 多条catch子句 224

10.6 嵌套的try语句 225

10.7 throw 228

10.8 throws 229

10.9 finally 230

10.10 Java的内置异常 232

10.11 创建自己的异常子类 233

10.12 链式异常 235

10.13 3个近期添加的异常特性 237

10.14 使用异常 238

第11章 多线程编程 239

11.1 Java线程模型 240

11.1.1 线程优先级 241

11.1.2 同步 241

11.1.3 消息传递 242

11.1.4 Thread类和Runnable接口 242

11.2 主线程 243

11.3 创建线程 244

11.3.1 实现Runnable接口 245

11.3.2 扩展Thread类 247

11.3.3 选择一种创建方式 248

11.4 创建多个线程 248

11.5 使用isAlive()和join()方法 249

11.6 线程优先级 252

11.7 同步 253

11.7.1 使用同步方法 253

11.7.2 synchronized语句 255

11.8 线程间通信 257

11.9 挂起、恢复与停止线程 263

11.10 获取线程的状态 266

11.11 使用多线程 267

第12章 枚举、自动装箱与注解(元数据) 269

12.1 枚举 269

12.1.1 枚举的基础知识 270

12.1.2 values()和valueOf() 272

12.1.3 Java枚举是类类型 273

12.1.4 枚举继承自Enum类 275

12.1.5 另一个枚举示例 277

12.2 类型封装器 279

12.2.1 Character封装器 279

12.2.2 Boolean封装器 279

12.2.3 数值类型封装器 280

12.3 自动装箱 281

12.3.1 自动装箱与方法 281

12.3.2 表达式中发生的自动装箱/拆箱 282

12.3.3 布尔型和字符型数值的自动装箱/拆箱 284

12.3.4 自动装箱/拆箱有助于防止错误 285

12.3.5 一些警告 285

12.4 注解(元数据) 286

12.4.1 注解的基础知识 286

12.4.2 指定保留策略 287

12.4.3 在运行时使用反射获取注解 288

12.4.4 AnnotatedElement接口 293

12.4.5 使用默认值 293

12.4.6 标记注解 295

12.4.7 单成员注解 296

12.4.8 内置注解 297

12.5 类型注解 299

12.6 重复注解 303

第13章 I/O、applet以及其他主题 307

13.1 I/O的基础知识 308

13.1.1 流 308

13.1.2 字节流和字符流 308

13.1.3 预定义流 310

13.2 读取控制台输入 311

13.2.1 读取字符 311

13.2.2 读取字符串 312

13.3 向控制台写输出 314

13.4 PrintWriter类 314

13.5 读/写文件 315

13.6 自动关闭文件 321

13.7 applet的基础知识 325

13.8 transient和volatile修饰符 327

13.9 使用instanceof运算符 328

13.10 strictfp 330

13.11 本地方法 331

13.12 使用assert 334

13.13 静态导入 337

13.14 通过this()调用重载的构造函数 339

13.15 紧凑API配置文件 342

第14章 泛型 343

14.1 什么是泛型 344

14.2 一个简单的泛型示例 344

14.2.1 泛型只使用引用类型 348

14.2.2 基于不同类型参数的泛型类型是不同的 348

14.2.3 泛型提升类型安全性的原理 348

14.3 带两个类型参数的泛型类 350

14.4 泛型类的一般形式 352

14.5 有界类型 352

14.6 使用通配符参数 355

14.7 创建泛型方法 363

14.8 泛型接口 366

14.9 原始类型与遗留代码 368

14.10 泛型类层次 370

14.10.1 使用泛型超类 370

14.10.2 泛型子类 372

14.10.3 泛型层次中的运行时类型比较 374

14.10.4 强制转换 376

14.10.5 重写泛型类的方法 376

14.11 泛型的类型推断 378

14.12 擦除 379

14.13 模糊性错误 381

14.14 使用泛型的一些限制 382

14.14.1 不能实例化类型参数 382

14.14.2 对静态成员的一些限制 383

14.14.3 对泛型数组的一些限制 383

14.14.4 对泛型异常的限制 384

第15章 lambda表达式 385

15.1 lambda表达式简介 386

15.1.1 lambda表达式的基础知识 386

15.1.2 函数式接口 387

15.1.3 几个lambda表达式示例 388

15.2 块lambda表达式 391

15.3 泛型函数式接口 393

15.4 作为参数传递lambda表达式 395

15.5 lambda表达式与异常 398

15.6 lambda表达式和变量捕获 399

15.7 方法引用 400

15.7.1 静态方法的方法引用 400

15.7.2 实例方法的方法引用 401

15.7.3 泛型中的方法引用 405

15.8 构造函数引用 408

15.9 预定义的函数式接口 412

第Ⅱ部分 Java库 417

第16章 字符串处理 417

16.1 String类的构造函数 418

16.2 字符串的长度 420

16.3 特殊的字符串操作 420

16.3.1 字符串字面值 421

16.3.2 字符串连接 421

16.3.3 字符串和其他数据类型的连接 421

16.3.4 字符串转换和toString()方法 422

16.4 提取字符 423

16.4.1 charAt() 424

16.4.2 getChars() 424

16.4.3 getBytes() 424

16.4.4 toCharArray() 425

16.5 比较字符串 425

16.5.1 equals()和equalsIgnoreCase() 425

16.5.2 regionMatches() 426

16.5.3 startsWith()和endsWith() 426

16.5.4 equals()与= 427

16.5.5 compareTo() 427

16.6 查找字符串 429

16.7 修改字符串 430

16.7.1 substring() 430

16.7.2 concat() 431

16.7.3 replace() 432

16.7.4 trim() 432

16.8 使用valueOf()转换数据 433

16.9 改变字符串中字符的大小写 434

16.10 连接字符串 434

16.11 其他String方法 435

16.12 StringBuffer类 436

16.12.1 StringBuffer类的构造函数 437

16.12.2 length()与capacity() 437

16.12.3 ensureCapacity() 438

16.12.4 setLength() 438

16.12.5 charAt()与setCharAt() 438

16.12.6 getChars() 439

16.12.7 append() 439

16.12.8 insert() 440

16.12.9 reverse() 440

16.12.10 delete()与deleteCharAt() 441

16.12.11 replace() 441

16.12.12 substring() 442

16.12.13 其他StringBuffer方法 442

16.13 StringBuilder类 443

第17章 探究java.lang 445

17.1 基本类型封装器 446

17.1.1 Number 446

17.1.2 Double与Float 447

17.1.3 理解isInfinite()与isNaN() 450

17.1.4 Byte、Short、Integer和Long 451

17.1.5 Character 459

17.1.6 对Unicode代码点的附加支持 462

17.1.7 Boolean 463

17.2 Void类 464

17.3 Process类 464

17.4 Runtime类 465

17.4.1 内存管理 466

17.4.2 执行其他程序 467

17.5 ProcessBuilder类 469

17.6 System类 471

17.6.1 使用currentTimeMillis()计时程序的执行 472

17.6.2 使用arraycopy() 473

17.6.3 环境属性 474

17.7 Object类 474

17.8 使用clone()方法和Cloneable接口 475

17.9 Class类 477

17.10 ClassLoader类 480

17.11 Math类 481

17.11.1 三角函数 481

17.11.2 指数函数 481

17.11.3 舍入函数 482

17.11.4 其他数学方法 483

17.12 StrictMath类 485

17.13 Compiler类 485

17.14 Thread类、ThreadGroup类和Runnable接口 485

17.14.1 Runnable接口 485

17.14.2 Thread类 486

17.14.3 ThreadGroup类 488

17.15 ThreadLocal和InheritableThreadLocal类 492

17.16 Package类 492

17.17 RuntimePermission类 494

17.18 Throwable类 494

17.19 SecurityManager类 494

17.20 StackTraceElement类 494

17.21 Enum类 495

17.22 ClassValue类 496

17.23 CharSequence接口 496

17.24 Comparable接口 496

17.25 Appendable接口 497

17.26 Iterable接口 497

17.27 Readable接口 498

17.28 AutoCloseable接口 498

17.29 ThreadUncaughtExceptionHandler接口 498

17.30 java.lang子包 499

17.30.1 java.lang.annotation 499

17.30.2 java.lang.instrument 499

17.30.3 java.lang.invoke 499

17.30.4 java.lang.management 499

17.30.5 java.lang.ref 499

17.30.6 java.lang.reflect 499

第18章 java.util第1部分:集合框架 501

18.1 集合概述 503

18.2 JDK 5对集合框架的修改 504

18.2.1 泛型从根本上改变了集合框架 504

18.2.2 自动装箱使得使用基本类型更加容易 504

18.2.3 for-each风格的for循环 505

18.3 集合接口 505

18.3.1 Collection接口 506

18.3.2 List接口 508

18.3.3 Set接口 509

18.3.4 SortedSet接口 509

18.3.5 NavigableSet接口 510

18.3.6 Queue接口 511

18.3.7 Deque接口 512

18.4 集合类 514

18.4.1 ArrayList类 515

18.4.2 LinkedList类 518

18.4.3 HashSet类 520

18.4.4 LinkedHashSet类 521

18.4.5 TreeSet类 521

18.4.6 PriorityQueue类 523

18.4.7 ArrayDeque类 523

18.4.8 EnumSet类 524

18.5 通过迭代器访问集合 525

18.5.1 使用迭代器 527

18.5.2 使用for-each循环替代迭代器 528

18.6 Spliterator 529

18.7 在集合中存储用户定义的类 532

18.8 RandomAccess接口 533

18.9 使用映射 534

18.9.1 映射接口 534

18.9.2 映射类 539

18.10 比较器 544

18.11 集合算法 552

18.12 Arrays类 558

18.13 遗留的类和接口 563

18.13.1 Enumeration接口 564

18.13.2 Vector类 564

18.13.3 Stack类 568

18.13.4 Dictionary类 570

18.13.5 Hashtable类 571

18.13.6 Properties类 574

18.13.7 使用store()和load() 578

18.14 集合小结 580

第19章 java.util第2部分:更多实用工具类 581

19.1 StringTokenizer类 581

19.2 BitSet类 583

19.3 Optional、OptionalDouble、OptionalInt和OptionalLong 586

19.4 Date类 588

19.5 Calendar类 590

19.6 GregorianCalendar类 593

19.7 TimeZone类 595

19.8 SimpleTimeZone类 596

19.9 Locale类 597

19.10 Random类 598

19.11 Observable类 600

19.11.1 Observer接口 601

19.11.2 Observer示例 601

19.12 Timer和TimerTask类 604

19.13 Currency类 606

19.14 Formatter类 607

19.14.1 Formatter类的构造函数 607

19.14.2 Formatter类的方法 608

19.14.3 格式化的基础知识 609

19.14.4 格式化字符串和字符 611

19.14.5 格式化数字 611

19.14.6 格式化时间和日期 612

19.14.7 %n和%%说明符 614

19.14.8 指定最小字段宽度 614

19.14.9 指定精度 616

19.14.10 使用格式标志 617

19.14.11 对齐输出 617

19.14.12 空格、“+”、“0”以及“(”标志 618

19.14.13 逗号标志 619

19.14.14 “#”标志 619

19.14.15 大写选项 619

19.14.16 使用参数索引 620

19.14.17 关闭Formatter对象 621

19.14.18 printf()方法 622

19.15 Scanner类 622

19.15.1 Scanner类的构造函数 622

19.15.2 扫描的基础知识 623

19.15.3 一些Scanner示例 626

19.15.4 设置定界符 630

19.15.5 其他Scanner特性 632

19.16 ResourceBundle、ListResourceBundle和 633

19.17 其他实用工具类和接口 637

19.18 java.util子包 638

19.18.1 java.util.concurrent、java.util.concurrentatomic和java.util.concurrent.locks 638

19.18.2 java.util.function 638

19.18.3 java.util.jar 641

19.18.4 java.util.logging 641

19.18.5 java.util.prefs 641

19.18.6 java.util.regex 641

19.18.7 java.util.spi 642

19.18.8 iava.util.stream 642

19.18.9 java.util.zip 642

第20章 输入/输出:探究java.io 643

20.1 I/O类和接口 644

20.2 File类 645

20.2.1 目录 648

20.2.2 使用FilenameFilter接口 649

20.2.3 listFiles()方法 650

20.2.4 创建目录 650

20.3 AutoCloseable、Closeable和Flushable接口 650

20.4 I/O异常 651

20.5 关闭流的两种方式 651

20.6 流类 653

20.7 字节流 653

20.7.1 InputStream类 653

20.7.2 OutputStream类 654

20.7.3 FileInputStream类 654

20.7.4 FileOutputStream类 656

20.7.5 ByteArrayInputStream类 659

20.7.6 ByteArrayOutputStream类 660

20.7.7 过滤的字节流 662

20.7.8 缓冲的字节流 662

20.7.9 SequenceInputStream类 666

20.7.10 PrintStream类 667

20.7.11 DataOutputStream和DataInputStream类 670

20.7.12 RandomAccessFile类 671

20.8 字符流 672

20.8.1 Reader类 672

20.8.2 Writer类 673

20.8.3 FileReader类 674

20.8.4 FileWriter类 675

20.8.5 CharArrayReader类 676

20.8.6 CharArrayWriter类 677

20.8.7 BufferedReader类 678

20.8.8 BufferedWriter类 680

20.8.9 PushbackReader类 680

20.8.10 PrintWriter类 681

20.9 Console类 682

20.10 串行化 684

20.10.1 Serializable接口 684

20.10.2 Extemalizable接口 685

20.10.3 ObjectOutput接口 685

20.10.4 ObjectOutputStream类 685

20.10.5 ObjectInput接口 686

20.10.6 ObjectInputStream类 687

20.10.7 串行化示例 688

20.11 流的优点 690

第21章 探究NIO 691

21.1 NIO类 691

21.2 NIO的基础知识 692

21.2.1 缓冲区 692

21.2.2 通道 694

21.2.3 字符集和选择器 695

21.3 JDK7对NIO的增强 696

21.3.1 Path接口 696

21.3.2 Files类 697

21.3.3 Path接口 700

21.3.4 文件属性接口 700

21.3.5 FileSystem、FileSystems和FileStore类 702

21.4 使用NIO系统 702

21.4.1 为基于通道的I/O使用NIO 703

21.4.2 为基于流的I/O使用NIO 712

21.4.3 为路径和文件系统操作使用NIO 714

21.5 JDK 7之前基于通道的例子 722

21.5.1 读文件(JDK 7之前) 722

21.5.2 写文件(JDK 7之前) 726

第22章 联网 729

22.1 联网的基础知识 730

22.2 联网类和接口 731

22.3 InetAddress类 732

22.3.1 工厂方法 732

22.3.2 实例方法 733

22.4 Inet4Address类和Inet6Address类 733

22.5 TCP/IP客户端套接字 734

22.6 URL类 737

22.7 URLConnection类 739

22.8 HttpURLConnection类 741

22.9 URI类 744

22.10 cookie 744

22.11 TCP/IP服务器套接字 744

22.12 数据报 745

22.12.1 DatagramSocket类 745

22.12.2 DatagramPacket类 746

22.12.3 数据报示例 747

第23章 Applet类 749

23.1 applet的两种类型 749

23.2 applet的基础知识 750

23.3 applet的架构 753

23.4 applet的骨架 753

23.4.1 applet的初始化和终止 755

23.4.2 重写update()方法 756

23.5 简单的applet显示方法 756

23.6 请求重画 758

23.7 使用状态栏窗口 761

23.8 HTML APPLET标记 762

23.9 向applet传递参数 763

23.10 getDocumentBase()和getCodeBase() 766

23.11 AppletContext接口和showDocument()方法 767

23.12 AudioClip接口 769

23.13 AppletStub接口 769

23.14 向控制台输出 769

第24章 事件处理 771

24.1 两种事件处理机制 772

24.2 委托事件模型 772

24.2.1 事件 772

24.2.2 事件源 772

24.2.3 事件监听器 773

24.3 事件类 773

24.3.1 ActionEvent类 775

24.3.2 AdjustmentEvent类 775

24.3.3 ComponentEvent类 776

24.3.4 ContainerEvent类 777

24.3.5 FocusEvent类 777

24.3.6 InputEvent类 778

24.3.7 ItemEvent类 779

24.3.8 KeyEvent类 779

24.3.9 MouseEvent类 780

24.3.10 MouseWheelEvent类 782

24.3.11 TextEvent类 783

24.3.12 WindowEvent类 783

24.4 事件源 784

24.5 事件监听器接口 784

24.5.1 ActionListener接口 785

24.5.2 AdjustmentListener接口 785

24.5.3 ComponentListener接口 785

24.5.4 ContainerListener接口 786

24.5.5 FocusListener接口 786

24.5.6 ItemListener接口 786

24.5.7 KeyListener接口 786

24.5.8 MouseListener接口 786

24.5.9 MouseMotionListener接口 787

24.5.10 MouseWheelListener接口 787

24.5.11 TextListener接口 787

24.5.12 WindowFocusListener接口 787

24.5.13 WindowListener接口 787

24.6 使用委托事件模型 788

24.6.1 处理鼠标事件 788

24.6.2 处理键盘事件 791

24.7 适配器类 794

24.8 内部类 795

第25章 AWT介绍:使用窗口、图形和文本 799

25.1 AWT类 800

25.2 窗口基本元素 802

25.2.1 Cornponent类 803

25.2.2 Container类 803

25.2.3 Panel类 803

25.2.4 Window类 803

25.2.5 Frame类 803

25.2.6 Canvas类 803

25.3 使用框架窗口 804

25.3.1 设置窗口的尺寸 804

25.3.2 隐藏和显示窗口 804

25.3.3 设置窗口的标题 804

25.3.4 关闭框架窗口 805

25.4 在基于AWT的applet中创建框架窗口 805

25.5 创建基于窗口的程序 811

25.6 在窗口中显示信息 813

25.7 使用图形 814

25.7.1 绘制直线 814

25.7.2 绘制矩形 814

25.7.3 绘制椭圆和圆 815

25.7.4 绘制弧形 815

25.7.5 绘制多边形 815

25.7.6 演示绘制方法 815

25.7.7 改变图形的大小 817

25.8 使用颜色 818

25.8.1 Color类的方法 819

25.8.2 设置当前图形的颜色 820

25.8.3 一个演示颜色的applet 820

25.9 设置绘图模式 821

25.10 使用字体 823

25.10.1 确定可用字体 824

25.10.2 创建和选择字体 825

25.10.3 获取字体信息 827

25.11 使用FontMetrics管理文本输出 828

25.11.1 显示多行文本 829

25.11.2 居中显示文本 831

25.11.3 对齐多行文本 832

第26章 使用AWT控件、布局管理器和菜单 837

26.1 AWT控件的基础知识 838

26.1.1 添加和移除控件 838

26.1.2 响应控件 839

26.1.3 HeadlessException异常 839

26.2 使用标签 839

26.3 使用命令按钮 840

26.4 使用复选框 844

26.5 使用复选框组 846

26.6 使用下拉列表 847

26.7 使用列表框 849

26.8 管理滚动条 852

26.9 使用TextField 855

26.10 使用TextArea 857

26.11 理解布局管理器 859

26.11.1 FlowLayout布局管理器 859

26.11.2 BorderLayout布局管理器 861

26.11.3 使用Insets 863

26.11.4 GridLayout布局管理器 864

26.11.5 CardLayout布局管理器 866

26.11.6 GridBagLayout布局管理器 869

26.12 菜单栏和菜单 874

26.13 对话框 879

26.14 FileDialog类 885

26.15 关于重写paint()方法 886

第27章 图像 889

27.1 文件格式 890

27.2 图像基础:创建、加载与显示 890

27.2.1 创建Image对象 890

27.2.2 加载图像 891

27.2.3 显示图像 891

27.3 ImageObserver接口 893

27.4 双缓冲 894

27.5 MediaTracker类 896

27.6 ImageProducer接口 899

27.7 ImageConsumer接口 901

27.8 ImageFilter类 904

27.8.1 CropImageFilter类 904

27.8.2 RGBImageFilter类 906

27.9 其他图像类 917

第28章 并发实用工具 919

28.1 并发API包 920

28.1.1 java.util.concurrent包 920

28.1.2 java.util.concurrent.atomic包 921

28.1.3 java.util.concurrent.locks包 921

28.2 使用同步对象 921

28.2.1 Semaphore类 922

28.2.2 CountDownLatch类 927

28.2.3 CyclicBarrier类 929

28.2.4 Exchanger类 932

28.2.5 Phaser类 934

28.3 使用执行器 941

28.3.1 一个简单的执行器示例 942

28.3.2 使用Callable和Future接口 944

28.4 TimeUnit枚举 947

28.5 并发集合 948

28.6 锁 949

28.7 原子操作 951

28.8 通过Fork/Join框架进行并行编程 953

28.8.1 主要的Fork/Join类 953

28.8.2 分而治之的策略 956

28.8.3 一个简单的Fork/Join示例 957

28.8.4 理解并行级别带来的影响 960

28.8.5 一个使用RecursiveTask<V>的例子 963

28.8.6 异步执行任务 965

28.8.7 取消任务 966

28.8.8 确定任务的完成状态 966

28.8.9 重新启动任务 966

28.8.10 深入研究 967

28.8.11 关于Fork/Join框架的一些提示 968

28.9 并发实用工具与Java传统方式的比较 968

第29章 流API 971

29.1 流的基础知识 972

29.1.1 流接口 972

29.1.2 如何获得流 974

29.1.3 一个简单的流示例 975

29.2 缩减操作 978

29.3 使用并行流 980

29.4 映射 983

29.5 收集 987

29.6 迭代器和流 991

29.6.1 对流使用迭代器 991

29.6.2 使用Spliterator 992

29.7 流API中更多值得探究的地方 995

第30章 正则表达式和其他包 997

30.1 核心JavaAPI包 998

30.2 正则表达式处理 1000

30.2.1 Pattern类 1000

30.2.2 Matcher类 1000

30.2.3 正则表达式的语法 1001

30.2.4 演示模式匹配 1002

30.2.5 模式匹配的两个选项 1007

30.2.6 探究正则表达式 1008

30.3 反射 1008

30.4 远程方法调用 1012

30.5 使用java.text格式化日期和时间 1015

30.5.1 DateFormat类 1015

30.5.2 SimpleDateFormat类 1017

30.6 JDK8新增的时间和日期API 1019

30.6.1 时间和日期的基础知识 1020

30.6.2 格式化日期和时间 1021

30.6.3 解析日期和时间字符串 1024

30.7 探究java.time包的其他方面 1025

第Ⅲ部分 使用Swing进行GUI编程 1029

第31章 Swing简介 1029

31.1 Swing的起源 1030

31.2 Swing以AWT为基础 1030

31.3 两个关键的Swing特性 1030

31.3.1 Swing组件是轻量级的 1031

31.3.2 Swing支持可插入外观 1031

31.4 MVC连接 1031

31.5 组件与容器 1032

31.5.1 组件 1032

31.5.2 容器 1033

31.5.3 顶级容器窗格 1033

31.6 Swing包 1034

31.7 一个简单的Swing应用程序 1034

31.8 事件处理 1038

31.9 创建Swing applet 1041

31.10 在Swing中绘图 1044

31.10.1 绘图的基础知识 1044

31.10.2 计算可绘制区域 1045

31.10.3 一个绘图示例 1045

第32章 探究Swing 1049

32.1 JLabel与ImageIcon 1050

32.2 JTextField 1051

32.3 Swing按钮 1053

32.3.1 JButton 1053

32.3.2 JToggleButton 1056

32.3.3 复选框 1058

32.3.4 单选按钮 1060

32.4 JTabbedPane 1063

32.5 JScrollPane 1065

32.6 JList 1067

32.7 JComboBox 1070

32.8 树 1073

32.9 JTable 1076

第33章 Swing菜单简介 1079

33.1 菜单的基础知识 1080

33.2 JMenuBar、JMenu和JMenuItem概述 1081

33.2.1 JMenuBar 1081

33.2.2 JMenu 1082

33.2.3 JMenuItem 1083

33.3 创建主菜单 1084

33.4 向菜单项添加助记符和加速键 1088

33.5 向菜单项添加图片和工具提示 1090

33.6 使用JRadioButtonMenuItem和JCheckBoxMenuItem 1091

33.7 创建弹出菜单 1094

33.8 创建工具栏 1096

33.9 使用动作 1099

33.10 完整演示MenuDemo程序 1104

33.11 继续探究Swing 1111

第Ⅳ部分 使用JavaFX进行GUI编程 1115

第34章 JavaFX GUI编程简介 1115

34.1 JavaFX的基础概念 1116

34.1.1 JavaFX包 1116

34.1.2 Stage和Scene类 1117

34.1.3 节点和场景图 1117

34.1.4 布局 1117

34.1.5 Application类和生命周期方法 1117

34.1.6 启动JavaFX应用程序 1118

34.2 JavaFX应用程序的骨架 1118

34.3 编译和运行JavaFX程序 1121

34.4 应用程序线程 1122

34.5 一个简单的JavaFX控件:Label 1122

34.6 使用按钮和事件 1124

34.6.1 事件的基础知识 1124

34.6.2 按钮控件简介 1125

34.6.3 演示事件处理和按钮 1125

34.7 直接在画布上绘制 1128

第35章 探究JavaFX控件 1135

35.1 使用Image和ImageView 1136

35.1.1 向标签添加图片 1138

35.1.2 在按钮中使用图片 1140

35.2 ToggleButton 1143

35.3 RadioButton 1145

35.3.1 处理开关组中的变化事件 1149

35.3.2 处理单选按钮的另一种方式 1150

35.4 CheckBox 1152

35.5 ListView 1156

35.5.1 ListView的滚动条 1160

35.5.2 启用多项选择 1160

35.6 ComboBox 1161

35.7 TextField 1164

35.8 ScrollPane 1167

35.9 TreeView 1170

35.10 效果和变换简介 1175

35.10.1 效果 1175

35.10.2 变换 1176

35.10.3 演示效果和变换 1177

35.11 添加工具提示 1180

35.12 禁用控件 1181

第36章 JavaFX菜单简介 1183

36.1 菜单的基础知识 1184

36.2 MenuBar、Menu和MenuItem概述 1185

36.2.1 MenuBar 1185

36.2.2 Menu 1186

36.2.3 MenuItem 1186

36.3 创建主菜单 1187

36.4 向菜单项添加助记符和加速键 1193

36.5 向菜单项添加图片 1194

36.6 使用RadioMenuItem和CheckMenuItem 1195

36.7 创建上下文菜单 1197

36.8 创建工具栏 1200

36.9 完整的MenuDemo程序 1202

36.10 继续探究JavaFX 1209

第Ⅴ部分 应用Java 1213

第37章 Java Bean 1213

37.1 Java Bean是什么 1214

37.2 Java Bean的优势 1214

37.3 内省 1214

37.3.1 属性的设计模式 1214

37.3.2 事件的设计模式 1216

37.3.3 方法与设计模式 1216

37.3.4 使用BeanInfo接口 1216

37.4 绑定属性与约束属性 1217

37.5 持久性 1217

37.6 定制器 1218

37.7 Java Bear API 1218

37.7.1 Introspector类 1219

37.7.2 PropertyDescriptor类 1220

37.7.3 EventSetDescriptor类 1220

37.7.4 MethodDescriptor类 1220

37.8 一个Bean示例 1220

第38章 servlet 1225

38.1 背景 1225

38.2 servelet的生命周期 1226

38.3 servlet开发选项 1227

38.4 使用Tomcat 1227

38.5 一个简单的servlet 1229

38.5.1 创建和编译servlet源代码 1229

38.5.2 启动Tomcat 1230

38.5.3 启动Web浏览器并请求servlet 1230

38.6 Servlet API 1230

38.7 javax.servlet包 1230

38.7.1 Servlet接口 1231

38.7.2 ServletConfig接口 1231

38.7.3 ServletContext接口 1232

38.7.4 ServletRequest接口 1232

38.7.5 ServletResponse接口 1233

38.7.6 GenericServlet类 1233

38.7.7 ServletInputStream类 1234

38.7.8 ServletOutputSueam类 1234

38.7.9 servlet异常类 1234

38.8 读取servlet参数 1234

38.9 javax.servlet.http包 1236

38.9.1 HttpServletRequest接口 1236

38.9.2 HttpServletResponse接口 1237

38.9.3 HttpSession接口 1238

38.9.4 Cookie类 1239

38.9.5 HttpServlet类 1240

38.10 处理HTTP请求和响应 1241

38.10.1 处理HTTP GET请求 1241

38.10.2 处理HTTP POST请求 1243

38.11 使用cookie 1244

38.12 会话跟踪 1246

附录 使用Java的文档注释 1249