24
1.12Java关键字 26
1.13Java标识符 27
1.14Java类库 27
1.15自测题 27
第2章数据类型与运算符 29
2.1数据类型为什么重要 30
2.2Java的基本类型 30
2.2.1整数类型 31
2.2.2浮点型 32
2.2.3字符型 33
2.2.4布尔类型 34
2.3字面值 36
2.3.1十六进制、八进制和二进制字面值 36
2.3.2字符转义序列 37
2.3.3字符串字面值 37
2.4变量详解 38
2.4.1初始化变量 38
2.4.2动态初始化 39
2.5变量的作用域和生命期 39
2.6运算符 41
2.7算术运算符 42
2.8关系运算符和逻辑运算符 43
2.9短路逻辑运算符 45
2.10赋值运算符 46
2.11速记赋值 46
2.12赋值中的类型转换 48
2.13不兼容类型的强制转换 49
2.14运算符的优先级 50
2.15表达式 52
2.15.1表达式中的类型转换 52
2.15.2间距和圆括号 54
2.16自测题 54
第3章 程序控制语句 55
3.1从键盘输入字符 56
3.2if语句 57
3.2.1嵌套if语句 58
3.2.2if-else-if阶梯状结构 59
3.3switch语句 60
3.4for循环 66
3.4.1for循环的一些变体 67
3.4.2缺失部分要素的for循环 68
3.4.3无限循环 69
3.4.4没有循环体的循环 69
3.4.5在for循环内部声明循环控制变量 70
3.4.6增强型for循环 70
3.5while循环 71
3.6do-while循环 72
3.7使用break语句退出循环 77
3.8将break语句作为一种goto
语句使用 78
3.9使用continue语句 82
3.10嵌套循环 86
3.11自测题 87
第4章 类、对象和方法 89
4.1类的基础知识 90
4.1.1类的基本形式 90
4.1.2定义类 91
4.2如何创建对象 94
4.3引用变量和赋值 94
4.4方法 95
4.5从方法返回值 97
4.6返回值 98
4.7使用形参 100
4.8构造函数 107
4.9带形参的构造函数 109
4.10深入介绍new运算符 110
4.11垃圾回收 111
4.12this关键字 111
4.13自测题 113
第5章 其他数据类型与运算符 115
5.1数组 116
5.2多维数组 121
5.2.1二维数组 121
5.2.2不规则数组 122
5.2.3三维或更多维的数组 123
5.2.4初始化多维数组 123
5.3另一种声明数组的语法 124
5.4数组引用赋值 125
5.5使用length成员 126
5.6for-each形式的循环 131
5.6.1迭代多维数组 134
5.6.2应用增强型for循环 135
5.7字符串 135
5.7.1构造字符串 136
5.7.2操作字符串 136
5.7.3字符串数组 138
5.7.4字符串是不可变的 139
5.7.5使用String控制switch语句 140
5.8使用命令行实参 142
5.9使用局部变量的类型推断功能 143
5.9.1引用类型的局部变量类型推断 145
5.9.2在for循环中使用局部变量类型推断 146
5.9.3var的一些限制 147
5.10位运算符 147
5.10.1位运算符的与、或、异或和非 148
5.10.2移位运算符 151
5.10.3位运算符的赋值速记符 153
5.11?运算符 156
5.12自测题 157
第6章 方法和类详解 159
6.1控制对类成员的访问 160
6.2向方法传递对象 165
6.3返回对象 168
6.4方法重载 170
6.5重载构造函数 175
6.6递归 179
6.7理解static关键字 181
6.8嵌套类和内部类 187
6.9varargs:可变长度的实参 190
6.9.1varargs基础 190
6.9.2重载varargs方法 193
6.9.3varargs和歧义 194
6.10自测题 195
第7章 继承 197
7.1继承的基础知识 198
7.2成员访问与继承 201
7.3构造函数和继承 203
7.4使用super调用超类构造函数 205
7.5使用super访问超类成员 208
7.6创建多级层次结构 212
7.7何时执行构造函数 215
7.8超类引用和子类对象 216
7.9方法重写 220
7.10重写的方法支持多态性 222
7.11为何使用重写方法 224
7.12使用抽象类 227
7.13使用final 231
7.13.1使用final防止重写 231
7.13.2使用final防止继承 232
7.13.3对数据成员使用final 232
7.14Object类 233
7.15自测题 234
第8章 包和接口 237
8.1包 238
8.1.1定义包 239
8.1.2寻找包和CLASSPATH 239
8.1.3一个简短的包示例 240
8.2包和成员访问 241
8.3理解被保护的成员 243
8.4导入包 245
8.5Java的类库位于包中 246
8.6接口 247
8.7实现接口 248
8.8使用接口引用 251
8.9接口中的变量 258
8.10接口能够扩展 258
8.11默认接口方法 259
8.11.1默认方法的基础知识 260
8.11.2默认方法的实际应用 261
8.11.3多继承问题 262
8.12在接口中使用静态方法 263
8.13私有接口方法 264
8.14有关包和接口的最后思考 265
8.15自测题 265
第9章 异常处理 267
9.1异常的层次结构 268
9.2异常处理基础 269
9.2.1使用关键字try和catch 269
9.2.2一个简单的异常示例 270
9.3未捕获异常的后果 272
9.4使用多个catch语句 274
9.5捕获子类异常 275
9.6try代码块可以嵌套 276
9.7抛出异常 277
9.8Throwable详解 279
9.9使用finally 280
9.10使用throws语句 282
9.11另外3种异常功能 283
9.12Java的内置异常 284
9.13创建异常子类 286
9.14自测题 291
第10章 使用I/O 293
10.1基于流的JavaI/O 294
10.2字节流和字符流 294
10.3字节流类 295
10.4字符流类 295
10.5预定义流 296
10.6使用字节流 296
10.6.1读取控制台输入 297
10.6.2写入控制台输出 298
10.7使用字节流读写文件 299
10.7.1从文件输入 299
10.7.2写入文件 303
10.8自动关闭文件 304
10.9读写二进制数据 307
10.10随机访问文件 311
10.11使用Java字符流 313
10.11.1使用字符流的控制台输入 314
10.11.2使用字符流的控制台输出 317
10.12使用字符流的文件I/O 318
10.12.1使用FileWriter 318
10.12.2使用FileReader 319
10.13使用Java的类型封装器转换数值字符串 320
10.14自测题 328
第11章 多线程程序设计 331
11.1多线程的基础知识 332
11.2Thread类和Runnable接口 333
11.3创建一个线程 333
11.4创建多个线程 342
11.5确定线程何时结束 345
11.6线程的优先级 348
11.7同步 350
11.8使用同步方法 351
11.9同步语句 354
11.10使用notify()、wait()和notifyAll()的线程通信 356
11.11线程的挂起、继续执行和停止 361
11.12自测题 366
第12章 枚举、自动装箱、注解和其他特性 367
12.1枚举 368
12.2Java语言中的枚举是类类型 370
12.3values()和valueOf()方法 371
12.4构造函数、方法、实例变量和枚举 372
12.5枚举继承enum 374
12.6自动装箱 380
12.7类型封装器 380
12.8自动装箱的基础知识 382
12.9自动装箱和方法 383
12.10发生在表达式中的自动装箱/
自动拆箱 384
12.11静态导入 386
12.12注解(元数据) 388
12.13instanceof运算符 390
12.14自测题 392
第13章 泛型 395
13.1泛型的基础知识 396
13.2简单的泛型示例 397
13.2.1泛型只能用于引用类型 400
13.2.2泛型类型根据其类型参数而不同 400
13.2.3带有两个类型形参的泛型类 400
13.2.4泛型类的一般形式 402
13.3受限类型 402
13.4使用通配符实参 405
13.5受限通配符 408
13.6泛型方法 410
13.7泛型构造函数 412
13.8泛型接口 413
13.9原类型和遗留代码 419
13.10使用菱形运算符进行类型推断 421
13.11局部变量类型推断和泛型 422
13.12擦除特性 423
13.13歧义错误 423
13.14一些泛型限制 424
13.14.1类型形参不能被实例化 424
13.14.2对静态成员的限制 424
13.14.3泛型数组限制 425
13.14.4泛型异常限制 426
13.15继续学习泛型 426
13.16自测题 426
第14章 lambda表达式和方法引用 429
14.1lambda表达式简介 430
14.1.1lambda表达式的基础知识 431
14.1.2函数式接口 432
14.1.3几个lambda表达式示例 433
14.2块lambda表达式 438
14.3泛型函数式接口 439
14.4lambda表达式和变量捕获 444
14.5从lambda表达式中抛出异常 446
14.6方法引用 447
14.6.1静态方法的方法引用 447
14.6.2实例方法的方法引用 449
14.7构造函数引用 452
14.8预定义的函数式接口 455
14.9自测题 456
第15章 模块 459
15.1模块基础 460
15.1.1简单的模块示例 461
15.1.2编译、运行第一个模块示例 465
15.1.3详述requires和exports 466
15.2java.base和平台模块 466
15.3旧代码和未命名的模块 467
15.4导出到特定的模块 468
15.5使用requirestransitive 469
15.6使用服务 473
15.6.1服务和服务提供程序的基础知识 473
15.6.2基于服务的关键字 474
15.6.3基于模块的服务示例 474
15.7其他模块功能 480
15.7.1open模块 480
15.7.2opens语句 481
15.7.3requiresstatic 481
15.8继续学习模块 481
15.9自测题 482
第16章 switch表达式、记录以及其他新近添加的特性 483
16.1switch的增强 484
16.1.2switch表达式和yield语句简介 486
16.1.3case语句中的箭头 488
16.1.4深入介绍箭头case 489
16.2记录 495
16.2.1记录的基础知识 495
16.2.2创建记录构造函数 497
16.2.3深入介绍记录的getter方法 501
16.3instanceof的模式匹配 502
16.4密封类和密封接口 503
16.4.1密封类 504
16.4.2密封接口 506
16.5未来的发展方向 507
16.6自测题 507
第17章 Swing介绍 509
17.1Swing的起源和设计原则 510
17.2组件和容器 512
17.2.1组件 512
17.2.2容器 513
17.2.3顶级容器窗格 513
17.3布局管理器 513
17.4第一个简单的Swing程序 514
17.5Swing事件处理 518
17.5.1事件 518
17.5.2事件源 519
17.5.3事件监听器 519
17.5.4事件类和监听器接口 519
17.6使用JButton 520
17.7使用JTextField 523
17.8创建JCheckBox 526
17.9使用JList 529
17.10使用匿名内部类或lambda表达式来处理事件 538
17.11自测题 539
—以下内容通过扫描封底二维码获取—
附录A自测题答案 541
附录B使用Java的文档注释 579
附录C编译和运行简单的单文件程序 589
附录DJShell简介 591
附录E更多Java关键字 601