描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302506065
● 数据类型、变量、数组和运算符
● 控制语句
● 类、对象和方法
● 方法重载和重写
● 继承
● 接口和包
● 异常处理
● 多线程编程
● 枚举、自动装箱和注解
● I/O类
● 泛型
● lambda表达式
● 模块
● 字符串处理
● 集合框架
● 联网
● 事件处理
● AWT
● Swing和JavaFX
● 并发API
● 流API
● 正则表达式
● Java Bean
● servlet
第Ⅰ部分 Java语言
第1章 Java的历史和演变 3
1.1 Java的家世 3
1.1.1 现代编程语言的诞生:C语言 3
1.1.2 C :下一个阶段 4
1.1.3 Java出现的时机已经成熟 4
1.2 Java的诞生 5
1.3 Java改变Internet的方式 6
1.3.1 Java applet 6
1.3.2 安全性 6
1.3.3 可移植性 6
1.4 Java的魔力:字节码 7
1.5 不再推荐使用applet 7
1.6 servlet:服务器端的Java 8
1.7 Java的关键特性 8
1.7.1 简单性 8
1.7.2 面向对象 8
1.7.3 健壮性 8
1.7.4 多线程 9
1.7.5 体系结构中立 9
1.7.6 解释执行和高性能 9
1.7.7 分布式 9
1.7.8 动态性 9
1.8 Java的演变历程 9
1.9 Java SE 9 11
1.10 文化革新 12
第2章 Java综述 13
2.1 面向对象编程 13
2.1.1 两种范式 13
2.1.2 抽象 13
2.1.3 OOP三原则 14
2.2 第一个简单程序 16
2.2.1 输入程序 17
2.2.2 编译程序 17
2.2.3 深入分析第一个示例程序 17
2.3 第二个简短程序 19
2.4 两种控制语句 20
2.4.1 if语句 20
2.4.2 for循环 21
2.5 使用代码块 22
2.6 词汇问题 23
2.6.1 空白符 23
2.6.2 标识符 23
2.6.3 字面值 23
2.6.4 注释 23
2.6.5 分隔符 23
2.6.6 Java关键字 24
2.7 Java类库 24
第3章 数据类型、变量和数组 25
3.1 Java是强类型化的语言 25
3.2 基本类型 25
3.3 整型 25
3.3.1 byte 26
3.3.2 short 26
3.3.3 int 26
3.3.4 long 26
3.4 浮点型 27
3.4.1 float 27
3.4.2 double 27
3.5 字符型 27
3.6 布尔型 29
3.7 深入分析字面值 29
3.7.1 整型字面值 29
3.7.2 浮点型字面值 30
3.7.3 布尔型字面值 30
3.7.4 字符型字面值 31
3.7.5 字符串字面值 31
3.8 变量 31
3.8.1 变量的声明 31
3.8.2 动态初始化 32
3.8.3 变量的作用域和生存期 32
3.9 类型转换和强制类型转换 34
3.9.1 Java的自动类型转换 34
3.9.2 强制转换不兼容的类型 34
3.10 表达式中的自动类型提升 35
3.11 数组 36
3.11.1 一维数组 36
3.11.2 多维数组 38
3.11.3 另一种数组声明语法 41
3.12 关于字符串的一些说明 41
第4章 运算符 43
4.1 算术运算符 43
4.1.1 基本算术运算符 43
4.1.2 求模运算符 44
4.1.3 算术与赋值复合运算符 44
4.1.4 自增与自减运算符 45
4.2 位运算符 46
4.2.1 位逻辑运算符 47
4.2.2 左移 49
4.2.3 右移 50
4.2.4 无符号右移 51
4.2.5 位运算符与赋值的组合 52
4.3 关系运算符 52
4.4 布尔逻辑运算符 53
4.5 赋值运算符 54
4.6 “?”运算符 55
4.7 运算符的优先级 55
4.8 使用圆括号 56
第5章 控制语句 57
5.1 Java的选择语句 57
5.1.1 if语句 57
5.1.2 switch语句 59
5.2 迭代语句 62
5.2.1 while语句 63
5.2.2 do-while语句 64
5.2.3 for语句 66
5.2.4 for循环的for-each版本 68
5.2.5 嵌套的循环 72
5.3 跳转语句 72
5.3.1 使用break语句 72
5.3.2 使用continue语句 75
5.3.3 return语句 76
第6章 类 77
6.1 类的基础知识 77
6.1.1 类的一般形式 77
6.1.2 一个简单的类 78
6.2 声明对象 79
6.3 为对象引用变量赋值 80
6.4 方法 81
6.4.1 为Box类添加方法 81
6.4.2 返回值 83
6.4.3 添加带参数的方法 84
6.5 构造函数 85
6.6 this关键字 87
6.7 垃圾回收 88
6.8 堆栈类 88
第7章 方法和类的深入分析 91
7.1 重载方法 91
7.2 将对象用作参数 94
7.3 实参传递的深入分析 96
7.4 返回对象 97
7.5 递归 98
7.6 访问控制 100
7.7 理解static 102
7.8 final介绍 104
7.9 重新审视数组 104
7.10 嵌套类和内部类 105
7.11 String类介绍 107
7.12 使用命令行参数 109
7.13 varargs:可变长度实参 110
7.13.1 重载varargs方法 112
7.13.2 varargs方法与模糊性 113
第8章 继承 115
8.1 继承的基础知识 115
8.1.1 成员访问与继承 116
8.1.2 一个更实际的例子 117
8.1.3 超类变量可以引用子类对象 118
8.2 使用super关键字 119
8.2.1 使用super调用超类的构造函数 119
8.2.2 super的另一种用法 122
8.3 创建多级继承层次 123
8.4 构造函数的执行时机 125
8.5 方法重写 126
8.6 动态方法调度 128
8.6.1 重写方法的目的 129
8.6.2 应用方法重写 129
8.7 使用抽象类 130
8.8 在继承中使用final关键字 132
8.8.1 使用final关键字阻止重写 132
8.8.2 使用final关键字阻止继承 133
8.9 Object类 133
第9章 包和接口 135
9.1 包 135
9.1.1 定义包 135
9.1.2 包查找与CLASSPATH 136
9.1.3 一个简短的包示例 136
9.2 包和成员访问 137
9.3 导入包 140
9.4 接口 141
9.4.1 定义接口 141
9.4.2 实现接口 142
9.4.3 嵌套接口 144
9.4.4 应用接口 144
9.4.5 接口中的变量 147
9.4.6 接口可以扩展 148
9.5 默认接口方法 149
9.5.1 默认方法的基础知识 149
9.5.2 一个更加实用的例子 151
9.5.3 多级继承的问题 151
9.6 在接口中使用静态方法 152
9.7 私有接口方法 152
9.8 关于包和接口的最后说明 153
第10章 异常处理 155
10.1 异常处理的基础知识 155
10.2 异常类型 155
10.3 未捕获的异常 156
10.4 使用try和catch 157
10.5 多条catch子句 158
10.6 嵌套的try语句 159
10.7 throw 161
10.8 throws 162
10.9 finally 162
10.10 Java的内置异常 164
10.11 创建自己的异常子类 165
10.12 链式异常 166
10.13 其他三个异常特性 167
10.14 使用异常 168
第11章 多线程编程 169
11.1 Java线程模型 169
11.1.1 线程优先级 170
11.1.2 同步 170
11.1.3 消息传递 171
11.1.4 Thread类和Runnable接口 171
11.2 主线程 171
11.3 创建线程 172
11.3.1 实现Runnable接口 172
11.3.2 扩展Thread类 174
11.3.3 选择一种创建方式 175
11.4 创建多个线程 175
11.5 使用isAlive()和join()方法 176
11.6 线程优先级 178
11.7 同步 179
11.7.1 使用同步方法 179
11.7.2 synchronized语句 180
11.8 线程间通信 182
11.9 挂起、恢复与停止线程 187
11.10 获取线程的状态 189
11.11 使用工厂方法创建和启动线程 189
11.12 使用多线程 190
第12章 枚举、自动装箱与注解 191
12.1 枚举 191
12.1.1 枚举的基础知识 191
12.1.2 values()和valueOf()方法 193
12.1.3 Java枚举是类类型 194
12.1.4 枚举继承自Enum类 195
12.1.5 另一个枚举示例 196
12.2 类型封装器 198
12.2.1 Character封装器 198
12.2.2 Boolean封装器 198
12.2.3 数值类型封装器 198
12.3 自动装箱 199
12.3.1 自动装箱与方法 200
12.3.2 表达式中发生的自动装箱/拆箱 201
12.3.3 布尔型和字符型数值的自动装箱/
拆箱 202
12.3.4 自动装箱/拆箱有助于防止错误 202
12.3.5 一些警告 203
12.4 注解 203
12.4.1 注解的基础知识 203
12.4.2 指定保留策略 204
12.4.3 在运行时使用反射获取注解 204
12.4.4 AnnotatedElement接口 208
12.4.5 使用默认值 208
12.4.6 标记注解 209
12.4.7 单成员注解 210
12.4.8 内置注解 211
12.5 类型注解 213
12.6 重复注解 216
第13章 I/O、带资源的try语句以及其他
主题 219
13.1 I/O的基础知识 219
13.1.1 流 219
13.1.2 字节流和字符流 219
13.1.3 预定义流 221
13.2 读取控制台输入 221
13.2.1 读取字符 222
13.2.2 读取字符串 222
13.3 向控制台写输出 223
13.4 PrintWriter类 224
13.5 读/写文件 225
13.6 自动关闭文件 229
13.7 transient和volatile修饰符 231
13.8 使用instanceof运算符 232
13.9 strictfp 233
13.10 本地方法 234
13.11 使用assert 234
13.12 静态导入 236
13.13 通过this()调用重载的构造函数 238
13.14 紧凑API配置文件 239
第14章 泛型 241
14.1 什么是泛型 241
14.2 一个简单的泛型示例 241
14.2.1 泛型只使用引用类型 244
14.2.2 基于不同类型参数的泛型类型
是不同的 244
14.2.3 泛型提升类型安全性的原理 244
14.3 带两个类型参数的泛型类 246
14.4 泛型类的一般形式 247
14.5 有界类型 247
14.6 使用通配符参数 249
14.7 创建泛型方法 255
14.8 泛型接口 257
14.9 原始类型与遗留代码 259
14.10 泛型类层次 260
14.10.1 使用泛型超类 260
14.10.2 泛型子类 262
14.10.3 泛型层次中的运行时类型比较 263
14.10.4 强制转换 265
14.10.5 重写泛型类的方法 265
14.11 泛型的类型推断 266
14.12 擦除 267
14.13 模糊性错误 268
14.14 使用泛型的一些限制 269
14.14.1 不能实例化类型参数 269
14.14.2 对静态成员的一些限制 269
14.14.3 对泛型数组的一些限制 270
14.14.4 对泛型异常的限制 271
第15章 lambda表达式 273
15.1 lambda表达式简介 273
15.1.1 lambda表达式的基础知识 273
15.1.2 函数式接口 274
15.1.3 几个lambda表达式示例 275
15.2 块lambda表达式 277
15.3 泛型函数式接口 278
15.4 作为参数传递lambda表达式 280
15.5 lambda表达式与异常 282
15.6 lambda表达式和变量捕获 282
15.7 方法引用 283
15.7.1 静态方法的方法引用 283
15.7.2 实例方法的方法引用 284
15.7.3 泛型中的方法引用 287
15.8 构造函数引用 289
15.9 预定义的函数式接口 293
第16章 模块 295
16.1 模块基础知识 295
16.1.1 简单的模块示例 295
16.1.2 编译、运行第一个模块示例 298
16.1.3 requires和exports 299
16.2 java.base和平台模块 299
16.3 旧代码和未命名的模块 300
16.4 导出到特定的模块 300
16.5 使用requires transitive 301
16.6 使用服务 304
16.6.1 服务和服务提供程序的基础知识 304
16.6.2 基于服务的关键字 305
16.6.3 基于模块的服务示例 305
16.7 模块图 310
16.8 三个特殊的模块特性 310
16.8.1 open模块 310
16.8.2 opens语句 310
16.8.3 requires static 311
16.9 jlink工具和模块JAR文件介绍 311
16.9.1 链接exploded directory中的文件 311
16.9.2 链接模块化的JAR文件 311
16.9.3 JMOD文件 312
16.10 层与自动模块简述 312
16.11 小结 312
第Ⅱ部分 Java库
第17章 字符串处理 315
17.1 String类的构造函数 315
17.2 字符串的长度 317
17.3 特殊的字符串操作 317
17.3.1 字符串字面值 317
17.3.2 字符串连接 317
17.3.3 字符串和其他数据类型的连接 318
17.3.4 字符串转换和toString()方法 318
17.4 提取字符 319
17.4.1 charAt() 319
17.4.2 getChars() 319
17.4.3 getBytes() 320
17.4.4 toCharArray() 320
17.5 比较字符串 320
17.5.1 equals()和equalsIgnoreCase() 320
17.5.2 regionMatches() 321
17.5.3 startsWith()和endsWith() 321
17.5.4 equals()与== 321
17.5.5 compareTo() 322
17.6 查找字符串 323
17.7 修改字符串 324
17.7.1 substring() 324
17.7.2 concat() 325
17.7.3 replace() 325
17.7.4 trim() 325
17.8 使用valueOf()转换数据 326
17.9 改变字符串中字符的大小写 326
17.10 连接字符串 327
17.11 其他String方法 327
17.12 StringBuffer类 328
17.12.1 StringBuffer类的构造函数 328
17.12.2 length()与capacity() 329
17.12.3 ensureCapacity() 329
17.12.4 setLength() 329
17.12.5 charAt()与setCharAt() 329
17.12.6 getChars() 330
17.12.7 append() 330
17.12.8 insert() 330
17.12.9 reverse() 331
17.12.10 delete()与deleteCharAt() 331
17.12.11 replace() 332
17.12.12 substring() 332
17.12.13 其他StringBuffer方法 332
17.13 StringBuilder类 333
第18章 探究java.lang 335
18.1 基本类型封装器 335
18.1.1 Number 336
18.1.2 Double与Float 336
18.1.3 理解isInfinite()与isNaN() 338
18.1.4 Byte、Short、Integer和Long 339
18.1.5 Character 346
18.1.6 对Unicode代码点的附加支持 348
18.1.7 Boolean 349
18.2 Void类 349
18.3 Process类 349
18.4 Runtime类 350
18.4.1 内存管理 351
18.4.2 执行其他程序 352
18.5 Runtime.Version 353
18.6 ProcessBuilder类 353
18.7 System类 355
18.7.1 使用currentTimeMillis()计时程序的
执行 356
18.7.2 使用arraycopy()方法 357
18.7.3 环境属性 357
18.8 System.Logger和System.Logger
Finder 358
18.9 Object类 358
18.10 使用clone()方法和Cloneable
接口 358
18.11 Class类 360
18.12 ClassLoader类 362
18.13 Math类 362
18.13.1 三角函数 362
18.13.2 指数函数 363
18.13.3 舍入函数 363
18.13.4 其他数学方法 364
18.14 StrictMath类 365
18.15 Compiler类 365
18.16 Thread类、ThreadGroup类和
Runnable接口 366
18.16.1 Runnable接口 366
18.16.2 Thread类 366
18.16.3 ThreadGroup类 368
18.17 ThreadLocal和InheritableThread
Local类 371
18.18 Package类 371
18.19 Module类 372
18.20 ModuleLayer类 372
18.21 RuntimePermission类 372
18.22 Throwable类 373
18.23 SecurityManager类 373
18.24 StackTraceElement类 373
18.25 StackWalker类和StackWalker.
StackFrame接口 373
18.26 Enum类 373
18.27 ClassValue类 374
18.28 CharSequence接口 374
18.29 Comparable接口 374
18.30 Appendable接口 375
18.31 Iterable接口 375
18.32 Readable接口 375
18.33 AutoCloseable接口 375
18.34 Thread.UncaughtExceptionHandler
接口 376
18.35 java.lang子包 376
18.35.1 java.lang.annotation 376
18.35.2 java.lang.instrument 376
18.35.3 java.lang.invoke 376
18.35.4 java.lang.module 376
18.35.5 java.lang.management 376
18.35.6 java.lang.ref 376
18.35.7 java.lang.reflect 377
第19章 java.util第1部分:集合框架 379
19.1 集合概述 380
19.2 集合接口 380
19.2.1 Collection接口 381
19.2.2 List接口 382
19.2.3 Set接口 384
19.2.4 SortedSet接口 384
19.2.5 NavigableSet接口 385
19.2.6 Queue接口 385
19.2.7 Deque接口 386
19.3 集合类 387
19.3.1 ArrayList类 388
19.3.2 LinkedList类 390
19.3.3 HashSet类 391
19.3.4 LinkedHashSet类 392
19.3.5 TreeSet类 392
19.3.6 PriorityQueue类 393
19.3.7 ArrayDeque类 394
19.3.8 EnumSet类 395
19.4 通过迭代器访问集合 395
19.4.1 使用迭代器 396
19.4.2 使用for-each循环替代迭代器 398
19.5 Spliterator 398
19.6 在集合中存储用户定义的类 400
19.7 RandomAccess接口 401
19.8 使用映射 401
19.8.1 映射接口 402
19.8.2 映射类 406
19.9 比较器 409
19.10 集合算法 415
19.11 Arrays类 420
19.12 遗留的类和接口 423
19.12.1 Enumeration接口 424
19.12.2 Vector类 424
19.12.3 Stack类 427
19.12.4 Dictionary类 428
19.12.5 Hashtable类 429
19.12.6 Properties类 431
19.12.7 使用store()和load()方法 434
19.13 集合小结 435
第20章 java.util第2部分:更多实用
工具类 437
20.1 StringTokenizer类 437
20.2 BitSet类 438
20.3 Optional、OptionalDouble、
OptionalInt和OptionalLong 440
20.4 Date类 442
20.5 Calendar类 443
20.6 GregorianCalendar类 445
20.7 TimeZone类 446
20.8 SimpleTimeZone类 447
20.9 Locale类 448
20.10 Random类 449
20.11 Timer和TimerTask类 450
20.12 Currency类 452
20.13 Formatter类 453
20.13.1 Formatter类的构造函数 453
20.13.2 Formatter类的方法 453
20.13.3 格式化的基础知识 454
20.13.4 格式化字符串和字符 455
20.13.5 格式化数字 455
20.13.6 格式化时间和日期 456
20.13.7 %n和%%说明符 458
20.13.8 指定最小字段宽度 458
20.13.9 指定精度 459
20.13.10 使用格式标志 460
20.13.11 对齐输出 460
20.13.12 空格、“ ”、“0”以及“(”
标志 461
20.13.13 逗号标志 462
20.13.14 “#”标志 462
20.13.15 大写选项 462
20.13.16 使用参数索引 462
20.13.17 关闭Formatter对象 463
20.13.18 printf()方法 464
20.14 Scanner类 464
20.14.1 Scanner类的构造函数 464
20.14.2 扫描的基础知识 465
20.14.3 一些Scanner示例 467
20.14.4 设置定界符 470
20.14.5 其他Scanner特性 471
20.15 ResourceBundle、ListResourceBundle
和PropertyResourceBundle类 472
20.16 其他实用工具类和接口 475
20.17 java.util子包 475
20.17.1 java.util.concurrent、java.util.concurrent.
atomic和java.util.concurrent.locks 476
20.17.2 java.util.function 476
20.17.3 java.util.jar 478
20.17.4 java.util.logging 478
20.17.5 java.util.prefs 478
20.17.6 java.util.regex 478
20.17.7 java.util.spi 478
20.17.8 java.util.stream 478
20.17.9 java.util.zip 478
第21章 输入/输出:探究java.io 479
21.1 I/O类和接口 479
21.2 File类 480
21.2.1 目录 482
21.2.2 使用FilenameFilter接口 483
21.2.3 listFiles()方法 483
21.2.4 创建目录 484
21.3 AutoCloseable、Closeable和
Flushable接口 484
21.4 I/O异常 484
21.5 关闭流的两种方式 484
21.6 流类 485
21.7 字节流 486
21.7.1 InputStream类 486
21.7.2 OutputStream类 486
21.7.3 FileInputStream类 487
21.7.4 FileOutputStream类 488
21.7.5 ByteArrayInputStream类 490
21.7.6 ByteArrayOutputStream类 491
21.7.7 过滤的字节流 492
21.7.8 缓冲的字节流 492
21.7.9 SequenceInputStream类 495
21.7.10 PrintStream类 496
21.7.11 DataOutputStream和
DataInputStream类 498
21.7.12 RandomAccessFile类 499
21.8 字符流 500
21.8.1 Reader类 500
21.8.2 Writer类 501
21.8.3 FileReader类 501
21.8.4 FileWriter类 502
21.8.5 CharArrayReader类 503
21.8.6 CharArrayWriter类 504
21.8.7 BufferedReader类 505
21.8.8 BufferedWriter类 506
21.8.9 PushbackReader类 506
21.8.10 PrintWriter类 507
21.9 Console类 508
21.10 串行化 509
21.10.1 Serializable接口 509
21.10.2 Externalizable接口 509
21.10.3 ObjectOutput接口 509
21.10.4 ObjectOutputStream类 510
21.10.5 ObjectInput接口 510
21.10.6 ObjectInputStream类 511
21.10.7 串行化示例 512
21.11 流的优点 513
第22章 探究NIO 515
22.1 NIO类 515
22.2 NIO的基础知识 515
22.2.1 缓冲区 515
22.2.2 通道 517
22.2.3 字符集和选择器 518
22.3 NIO.2对NIO的增强 518
22.3.1 Path接口 518
22.3.2 Files类 519
22.3.3 Path接口 521
22.3.4 文件属性接口 521
22.3.5 FileSystem、FileSystems和
FileStore类 522
22.4 使用NIO系统 522
22.4.1 为基于通道的I/O使用NIO 523
22.4.2 为基于流的I/O使用NIO 529
22.4.3 为路径和文件系统操作使用NIO 531
第23章 联网 539
23.1 联网的基础知识 539
23.2 联网类和接口 540
23.3 InetAddress类 540
23.3.1 工厂方法 540
23.3.2 实例方法 541
23.4 Inet4Address类和Inet6Address类 541
23.5 TCP/IP客户端套接字 542
23.6 URL类 544
23.7 URLConnection类 545
23.8 HttpURLConnection类 547
23.9 URI类 549
23.10 cookie 549
23.11 TCP/IP服务器套接字 549
23.12 数据报 549
23.12.1 DatagramSocket类 550
23.12.2 DatagramPacket类 550
23.12.3 数据报示例 551
第24章 事件处理 553
24.1 两种事件处理机制 553
24.2 委托事件模型 553
24.2.1 事件 554
24.2.2 事件源 554
24.2.3 事件监听器 554
24.3 事件类 554
24.3.1 ActionEvent类 555
24.3.2 AdjustmentEvent类 556
24.3.3 ComponentEvent类 556
24.3.4 ContainerEvent类 557
24.3.5 FocusEvent类 557
24.3.6 InputEvent类 558
24.3.7 ItemEvent类 558
24.4 KeyEvent类 559
24.4.1 MouseEvent类 559
24.4.2 MouseWheelEvent类 560
24.4.3 TextEvent类 561
24.4.4 WindowEvent类 561
24.5 事件源 562
24.6 事件监听器接口 562
24.6.1 ActionListener接口 563
24.6.2 AdjustmentListener接口 563
24.6.3 ComponentListener接口 563
24.6.4 ContainerListener接口 563
24.6.5 FocusListener接口 563
24.6.6 ItemListener接口 563
24.6.7 KeyListener接口 564
24.6.8 MouseListener接口 564
24.6.9 MouseMotionListener接口 564
24.6.10 MouseWheelListener接口 564
24.6.11 TextListener接口 564
24.6.12 WindowFocusListener接口 564
24.6.13 WindowListener接口 564
24.7 使用委托事件模型 565
24.7.1 一些重要的GUI概念 565
24.7.2 处理鼠标事件 565
24.7.3 处理键盘事件 568
24.8 适配器类 571
24.9 内部类 572
第25章 AWT介绍:使用窗口、图形和
文本 577
25.1 AWT类 577
25.2 窗口基本元素 579
25.2.1 Component类 579
25.2.2 Container类 579
25.2.3 Panel类 580
25.2.4 Window类 580
25.2.5 Frame类 580
25.2.6 Canvas类 580
25.3 使用框架窗口 580
25.3.1 设置窗口的尺寸 580
25.3.2 隐藏和显示窗口 580
25.3.3 设置窗口的标题 581
25.3.4 关闭框架窗口 581
25.3.5 paint()方法 581
25.3.6 显示字符串 581
25.3.7 设置前景色和背景色 581
25.3.8 请求重画 582
25.3.9 创建基于框架的应用程序 583
25.4 使用图形 583
25.4.1 绘制直线 583
25.4.2 绘制矩形 583
25.4.3 绘制椭圆和圆 584
25.4.4 绘制弧形 584
25.4.5 绘制多边形 584
25.4.6 演示绘制方法 584
25.4.7 改变图形的大小 586
25.5 使用颜色 587
25.5.1 Color类的方法 587
25.5.2 设置当前图形的颜色 588
25.5.3 一个演示颜色的applet 588
25.6 设置绘图模式 589
25.7 使用字体 590
25.7.1 确定可用字体 591
25.7.2 创建和选择字体 592
25.7.3 获取字体信息 594
25.8 使用FontMetrics管理文本输出 595
第26章 使用AWT控件、布局管理器和
菜单 599
26.1 AWT控件的基础知识 599
26.1.1 添加和移除控件 599
26.1.2 响应控件 600
26.1.3 HeadlessException异常 600
26.2 使用标签 600
26.3 使用命令按钮 601
26.4 使用复选框 604
26.5 使用复选框组 606
26.6 使用下拉列表 607
26.7 使用列表框 609
26.8 管理滚动条 611
26.9 使用TextField 613
26.10 使用TextArea 615
26.11 理解布局管理器 617
26.11.1 FlowLayout布局管理器 617
26.11.2 BorderLayout布局管理器 618
26.11.3 使用Insets 619
26.11.4 GridLayout布局管理器 620
26.11.5 CardLayout布局管理器 621
26.11.6 GridBagLayout布局管理器 623
26.12 菜单栏和菜单 627
26.13 对话框 630
26.14 关于重写paint()方法 634
Java是当今世界最重要、也是使用最广泛的计算机语言之一。而且,在多年之前它就已经拥有这一荣誉。与其他一些计算机语言随着时间的流逝影响也逐渐减弱不同,Java随着时间的推移反而变得更加强大。从首次发布开始,Java就跃到了Internet编程的前沿。后续的每一个版本都进一步巩固了这一地位。如今,Java依然是开发Web应用的最佳选择。Java是一门功能强大且通用的编程语言,适合于多种目的的开发。简言之:在现实世界中,很多应用都是使用Java开发的,掌握Java语言非常重要。
Java成功的一个关键原因在于它的敏捷性。自从最初的Java 1.0版发布以来,Java不断地进行完善以适应编程环境和开发人员编程方式的变化。最重要的是,Java不仅仅是在跟随潮流,更是在帮助创造潮流。Java能够适应计算机世界快速变化的能力,是它一直并且仍将如此成功的关键因素。
《Java编程参考官方大全》自从1996年首次出版以来,已经经历了数次改版,每次改版都反映了Java的不断演化进程。《Java 9编程参考官方大全(第10版)》已经针对Java SE 9(JDK 9)进行了升级。因为Java SE 9向Java语言添加了几个新特性,所以《Java 9编程参考官方大全(第10版)》包含了大量新内容。最重要的一个新增特性是模块(module),通过该特性可以指定应用程序中代码间的关系和依赖性。模块也会影响对元素的访问。此外,模块代表对Java语言最具深远意义的更改之一,其中添加了两个新的语法元素和10个新关键字。模块还对Java API库产生了巨大影响,因为现在模块由API库中的包构成。另外,为了支持模块,新增了一些工具,对现有的工具也进行了更新,还定义了新的文件格式。由于模块是一个非常重要的新特性,因此《Java 9编程参考官方大全(第10版)》的第16章专门对其进行了讲解。
除模块外,JDK 9中还新增了一些其他特性。其中最有趣的是JShell,该工具提供了一个交互式环境,开发人员不需要编写完整的程序就可以方便地在其中体验代码片段。不管是初学者还是有经验的编程人员都将发现该工具非常有用。《Java 9编程参考官方大全(第10版)》的附录C对该工具进行了介绍。与前几版一样,JDK 9也对Java语言及其API库进行了一些细小的更新和增强。因此,你在整《Java 9编程参考官方大全(第10版)》中都会看到这些更新内容。最后要提到的一点是:Java SE 9中删除了applet和applet API。因此,《Java 9编程参考官方大全(第10版)》不再详细介绍它们,而仅在《Java 9编程参考官方大全(第10版)》的附录D中对applet做了简要介绍。
一本适合所有编程人员的书
《Java 9编程参考官方大全(第10版)》面向所有开发人员,不管是初学者还是有经验的编程人员。初学者将从《Java 9编程参考官方大全(第10版)》中发现每个主题的详细讨论,以及许多特别有帮助的例子。而对Java更高级特性和库的深入讨论,将会吸引有经验的编程人员。无论是对于初学者还是有经验的编程人员,《Java 9编程参考官方大全(第10版)》都提供了持久的资源和方便实用的参考。
《Java 9编程参考官方大全(第10版)》内容
《Java 9编程参考官方大全(第10版)》是对Java语言的全面指导,描述了它的语法、关键字以及基本的编程原则,另外还介绍了Java API库的重要部分。《Java 9编程参考官方大全(第10版)》分为5部分,每部分关注Java开发环境的不同方面。
第Ⅰ部分是对Java语言的深入阐述。该部分从基础知识开始讲解,包括数据类型、运算符、控制语句以及类等。然后介绍了继承、包、接口、异常处理以及多线程,还介绍了注解、枚举、自动装箱、泛型、I/O以及lambda表达式等内容。本部分最后一章阐述了模块。模块是Java SE 9中最重要的新增特性。
第Ⅱ部分介绍Java的标准API库的关键内容。本部分的主题包括字符串、I/O、网络、标准实用工具、集合框架、AWT、事件处理、图像、并发编程(包括Fork/Join框架)、正则表达式和新增的流库。
第Ⅲ部分用三章内容介绍Swing。
第IV部分用三章内容介绍JavaFX。
第V部分包含两章,这两章展示了Java的实际应用。本部分首先介绍Java Bean,然后介绍servlet。
《Java 9编程参考官方大全(第10版)》下载资源包可扫描封底二维码获得。
致 谢
在此我要特别感谢Patrick Naughton、Joe O’Neil和Danny Coward。
Patrick Naughton是Java语言的创立者之一,他还参与编写了《Java 9编程参考官方大全(第10版)》的第1版。《Java 9编程参考官方大全(第10版)》第21、23和27章的大部分材料最初都是由Patrick提供的。他的洞察力、专业知识和活力都对《Java 9编程参考官方大全(第10版)》的成功付梓贡献极大。
在准备《Java 9编程参考官方大全(第10版)》的第2版和第3版的过程中,Joe O’Neil提供了原始素材,这些素材呈现在《Java 9编程参考官方大全(第10版)》的第30、32、37和38章中。Joe对我的数《Java 9编程参考官方大全(第10版)》都有帮助,并且他提供的帮助一直都是最高质量的。
Danny Coward是《Java 9编程参考官方大全(第10版)》第10版的技术编辑。Danny对我的数《Java 9编程参考官方大全(第10版)》都有贡献,他的忠告、洞察力和建议都有巨大价值,对此表示感谢。
如何进一步学习
《Java编程参考官方教程》为读者开启了Herb Schildt Java编程图书系列的大门。下面是其他一些你可能感兴趣的图书:
Herb Schildt’s Java Programming Cookbook
Java:A Beginner’s Guide
Introducing JavaFX 8 Programming
Swing:A Beginner’s Guide
The Art of Java
评论
还没有评论。