Java 7入门经典
作者简介:
Ivor Horton是Java、C和C++编程语言方面的杰出作者,由他执笔的图书都非常有名,如《Visual C++ 2010入门经典(第5版)》、《C语言入门经典(第4版)》、《C++入门经典(第3版)》等。他编写的图书十分适合初学者学习,讲解细腻、全面,示例丰富,深受读者好评。Ivor Horton还是私人实践方面的系统顾问。
内容简介:
无论学习Java是为了编写嵌入网页的定制applet,还是为了编写大型应用程序,本书都十分适合阅读。本书是关于Java语言讲解最为细致、全面的入门书籍,介绍了使用最新的Java JDK 7开发程序所需要的所有基础知识。书中包含大量的示例,清晰地解释了涉及的关键概念,演示了Java开发的复杂细节。在阅读各个章节的过程中,您还能获得无价的编程经验,并逐步开始编写功能全面的Java程序。Ivor Horton在编写入门类编程图书方面独具心得,著作深受好评。Java SE 7相对之前发布版本更新了超过30%的语言特性,本书从基础知识入门,介绍了使用这一最新发布版本编写Java程序的方方面面,涵盖了Java的所有语言新特性,可为读者打下坚实的基础。
目录:
第1章 Java简介 1
1.1 Java概览 1
1.2 Java语言的特性 2
1.3 学习Java 2
1.3.1 Java程序 3
1.3.2 Java学习路线图 3
1.4 Java环境 4
1.5 Java中的面向对象编程 11
1.5.1 什么是对象 12
1.5.2 如何定义对象类 13
1.5.3 对象操作 15
1.5.4 Java程序语句 17
1.5.5 封装 17
1.5.6 类与数据类型 18
1.5.7 类与子类 18
1.5.8 使用对象的优势 18
1.5.9 标记 18
1.5.10 泛型类 19
1.6 Java程序结构 19
1.6.1 Java的类库 19
1.6.2 Java应用程序 21
1.7 Java和Unicode 23
1.8 小结 24
1.9 资源 25
第2章 程序、数据、变量和计算 27
2.1 数据和变量 27
2.1.1 变量的命名 28
2.1.2 变量名与Unicode 28
2.1.3 变量与类型 29
2.2 整数数据类型 29
2.3 浮点数数据类型 33
2.3.1 浮点数字面量 33
2.3.2 声明浮点型变量 34
2.4 固定变量的值 34
2.5 算术运算 35
2.5.1 整数计算 35
2.5.2 整数除法和余数 40
2.5.3 增量与减量运算符 40
2.5.4 短整数类型的计算 42
2.5.5 整数算术中的错误 43
2.5.6 浮点计算 43
2.5.7 其他浮点算术运算符 44
2.5.8 浮点算术中的错误情况 44
2.5.9 混合算术表达式 45
2.5.10 显式转换 45
2.5.11 赋值中的自动类型转换 46
2.6 op=运算符 46
2.7 数学函数和常量 47
2.8 存储字符 51
2.8.1 字符转义序列 51
2.8.2 字符算术 52
2.9 位运算 54
2.9.1 使用AND和OR运算符 55
2.9.2 使用异或运算符 58
2.9.3 位移操作 59
2.9.4 位操作方法 62
2.10 取值范围为固定整数值集合的
变量 64
2.11 布尔变量 66
2.12 运算符的优先级 67
2.13 程序注释 68
2.14 小结 70
第3章 循环与逻辑 73
3.1 决策 73
3.1.1 比较 74
3.1.2 if语句 74
3.1.3 嵌套的if语句 78
3.1.4 比较枚举值 81
3.2 逻辑运算符 81
3.2.1 逻辑与操作 82
3.2.2 逻辑或操作 84
3.2.3 异或操作 84
3.2.4 布尔非操作 84
3.2.5 使用标准库方法测试字符 85
3.3 条件运算符 86
3.4 switch语句 88
3.5 变量的作用域 94
3.6 循环 96
3.6.1 循环的种类 97
3.6.2 使用浮点值计数 103
3.6.3 嵌套循环 103
3.6.4 continue语句 105
3.6.5 带标签的continue语句 105
3.6.6 在循环中使用break语句 107
3.7 断言 112
3.8 小结 114
第4章 数组与字符串 117
4.1 数组 117
4.1.1 数组变量 118
4.1.2 定义数组 118
4.1.3 数组长度 119
4.1.4 访问数组元素 119
4.1.5 重用数组变量 119
4.1.6 初始化数组 120
4.1.7 使用数组 123
4.1.8 二维数组 126
4.1.9 字符数组 130
4.2 字符串 131
4.2.1 字符串字面量 131
4.2.2 创建String对象 132
4.2.3 字符串数组 134
4.3 字符串操作 135
4.3.1 连接字符串 135
4.3.2 比较字符串 139
4.3.3 字符串排序 144
4.3.4 访问字符串中的字符 146
4.3.5 在字符串中查找字符 148
4.3.6 查找子字符串 149
4.3.7 提取子字符串 152
4.3.8 String对象的修改版本 156
4.3.9 从String对象创建字符
数组 157
4.3.10 使用字符串执行基于集合
的for循环 157
4.3.11 在字符串中获取字节数组
形式的字符 158
4.3.12 从字符数组中创建String
对象 158
4.4 可变字符串 159
4.4.1 创建StringBuffer对象 160
4.4.2 StringBuffer对象的容量 160
4.4.3 为StringBuffer对象修改字
符串的长度 162
4.4.4 增长StringBuffer对象 162
4.4.5 寻找子字符串的位置 164
4.4.6 替换缓冲区中的子字符串 165
4.4.7 插入字符串 165
4.4.8 从可变字符串中提取字符 166
4.4.9 可变字符串的其他操作 167
4.4.10 从StringBuffer对象创建
String对象 167
4.5 小结 169
第5章 定义类 173
5.1 类的定义 173
5.1.1 类定义中的域 174
5.1.2 类定义中的方法 175
5.1.3 访问变量和方法 176
5.1.4 Final域 177
5.2 定义类 177
5.3 定义方法 178
5.3.1 方法的返回值 179
5.3.2 参数列表 179
5.3.3 定义类方法 181
5.3.4 访问方法中的类数据成员 182
5.3.5 变量this 182
5.3.6 初始化数据成员 183
5.4 构造函数 186
5.4.1 默认构造函数 187
5.4.2 创建类的对象 188
5.5 定义和使用类 190
5.6 方法重载 192
5.6.1 多个构造函数 193
5.6.2 使用构造函数复制对象 196
5.7 使用对象 196
5.8 递归 202
5.9 理解包 204
5.9.1 对类打包 204
5.9.2 将类从包添加到程序中 207
5.9.3 程序中的包和名称 208
5.9.4 导入静态类成员 208
5.9.5 标准包 209
5.10 类成员的访问控制 212
5.10.1 使用访问属性 212
5.10.2 设定访问属性 214
5.10.3 选择访问属性 215
5.11 嵌套类 220
5.11.1 静态嵌套类 221
5.11.2 使用非静态嵌套类 225
5.11.3 使用非顶级类的嵌套类 227
5.11.4 本地嵌套类 228
5.12 小结 228
第6章 扩展类与继承 231
6.1 使用已有的类 231
6.2 类继承 233
6.2.1 继承数据成员 233
6.2.2 继承方法 234
6.2.3 覆盖基类方法 237
6.3 @Override标记 239
6.4 选择基类访问属性 239
6.5 多态 240
6.6 多级继承 246
6.7 抽象类 246
6.8 通用超类 247
6.8.1 toString()方法 249
6.8.2 判定对象的类型 249
6.8.3 复制对象 250
6.9 接受可变数目参数的方法 255
6.10 转换对象 256
6.10.1 转换对象的时机 258
6.10.2 识别对象 259
6.11 枚举进阶 260
6.12 设计类 264
6.13 使用final修饰符 274
6.14 接口 275
6.14.1 在程序中封装常量 275
6.14.2 用接口声明方法 278
6.14.3 扩展接口 281
6.14.4 使用接口 282
6.14.5 将接口类型作为方法的
参数使用 288
6.14.6 在接口定义中嵌套类 289
6.14.7 接口与真实环境 289
6.15 匿名类 289
6.16 小结 290
第7章 异常 293
7.1 异常的基本思想 293
7.2 异常类型 294
7.2.1 Error类型的异常 295
7.2.2 RuntimeException类型的
异常 295
7.2.3 Exception类的其他子类 295
7.3 处理异常 295
7.3.1 设定方法能够抛出的异常 296
7.3.2 处理异常 296
7.3.3 try代码块 296
7.3.4 catch代码块 297
7.3.5 在一个代码块中捕获多种
异常类型 301
7.3.6 finally代码块 301
7.3.7 构造方法 302
7.3.8 执行顺序 303
7.3.9 嵌套的try代码块 309
7.3.10 重新抛出异常 309
7.4 异常对象 310
7.4.1 Throwable类 310
7.4.2 标准异常 313
7.5 定义自己的异常 313
7.5.1 定义异常类 313
7.5.2 抛出自己的异常 315
7.5.3 异常的抛出策略 315
7.6 小结 320
第8章 理解流 323
8.1 流与输入输出操作 323
8.2 流的概念 324
8.2.1 输入流与输出流 324
8.2.2 二进制流与字符流 325
8.3 输入输出类 326
8.3.1 基本的输入流操作 327
8.3.2 缓冲输入流 327
8.3.3 基本的输出流操作 328
8.3.4 流读取器和编写器 329
8.4 标准流 332
8.4.1 从键盘读入数据 333
8.4.2 写到命令行中 340
8.4.3 printf()方法 340
8.4.4 将数据格式化为字符串 345
8.5 小结 346
第9章 访问文件与目录 349
9.1 访问文件系统 349
9.2 使用Path对象 351
9.2.1 访问系统属性 353
9.2.2 设置系统属性 355
9.2.3 测试和检查Path对象 355
9.2.4 查询文件和目录 356
9.2.5 获取文件属性 357
9.2.6 其他的路径操作 360
9.3 创建与删除目录和文件 361
9.3.1 创建目录 361
9.3.2 创建文件 363
9.3.3 删除文件和目录 364
9.4 获取目录内容 365
9.5 关闭流 366
9.6 移动与复制文件和目录 368
9.6.1 对文件或目录重命名 369
9.6.2 复制文件和目录 370
9.6.3 遍历文件树 375
9.7 小结 378
第10章 写文件 381
10.1 文件I/O基础 381
10.2 文件输出 382
10.3 通过输出流写文件 383
10.4 使用Writer写文件 386
10.5 缓冲区 389
10.5.1 缓冲区的容量 389
10.5.2 缓冲区的位置和限制 390
10.5.3 设置位置和限制 391
10.5.4 创建缓冲区 392
10.5.5 标记缓冲区 396
10.5.6 缓冲区数据传输 397
10.5.7 使用视图缓冲区 399
10.5.8 准备缓冲区以输出到
文件中 400
10.6 使用通道写文件 401
10.6.1 通道接口 402
10.6.2 通道操作 403
10.6.3 为文件获取通道 403
10.6.4 通道写操作 404
10.7 文件写操作 406
10.7.1 将缓冲区的一部分写入
到文件中 406
10.7.2 文件的位置 409
10.7.3 使用视图缓冲区加载字
节缓冲区 410
10.7.4 将变长字符串写入到
文件中 410
10.7.5 直接和间接缓冲区 416
10.7.6 使用通道写入数值
数据 417
10.7.7 将混合数据写入到
文件中 421
10.7.8 从多个缓冲区写入 427
10.8 强制将数据写入到设备中 430
10.9 小结 431
第11章 读文件 433
11.1 文件读取操作 433
11.1.1 使用输入流读取文件 434
11.1.2 使用缓冲读取器读取
文件 437
11.2 使用通道读取文件 439
11.2.1 读取文本文件 441
11.2.2 从缓冲区获取数据 442
11.2.3 读取二进制数据 444
11.2.4 读取混合数据 446
11.2.5 压缩缓冲区 449
11.3 复制文件 452
11.4 随机访问文件 455
11.5 内存映射文件 460
11.5.1 锁住文件 463
11.5.2 锁住文件的特定部分 465
11.5.3 实用的文件加锁考量 465
11.6 小结 468
第12章 序列化对象 471
12.1 在文件中存储对象 471
12.2 将对象写入到文件中 472
12.2.1 将基本类型数据写入到
对象流中 474
12.2.2 实现Serializable接口 475
12.3 从文件读取对象 478
12.3.1 判定反序列化对象所属
的类 481
12.3.2 使用对象序列化 482
12.3.3 手动序列化类 485
12.3.4 序列化问题和困难 486
12.4 小结 488
第13章 泛型 491
13.1 什么是泛型 491
13.2 定义泛型类 492
13.2.1 实现泛型类 493
13.2.2 实例化泛型类 495
13.2.3 泛型类实例在运行时
的类型 500
13.2.4 泛型类实例之间的
关系 502
13.2.5 多个类型参数 502
13.2.6 类型参数的作用域 503
13.2.7 泛型类的静态域 504
13.2.8 类型参数的边界 504
13.3 泛型类和泛型接口 508
13.3.1 实现针对容器类的基于
集合的循环 508
13.3.2 实现迭代器的功能 510
13.3.3 二叉树的参数化类型 512
13.4 原生类型的变量 523
13.5 使用通配符类型参数 524
13.5.1 针对通配符的约束 526
13.5.2 深入Class类 529
13.6 数组与参数化类型 530
13.7 参数化方法 533
13.8 参数化类型及继承 539
13.9 总结 540
第14章 集合框架 543
14.1 理解集合框架 543
14.2 对象集合 544
14.2.1 集 544
14.2.2 序列 545
14.2.3 地图 546
14.3 迭代器 547
14.4 集合类 549
14.5 使用EnumSet 552
14.6 数组集合类 554
14.6.1 创建矢量 554
14.6.2 存储对象 557
14.6.3 检索对象 558
14.6.4 移除对象 560
14.6.5 搜索对象 561
14.6.6 应用矢量 562
14.6.8 对集合中的元素进行
排序 566
14.6.9 堆栈存储器 567
14.7 链表 573
14.8 使用地图 575
14.8.1 散列过程 575
14.8.2 把自己的类用作键 576
14.8.3 创建HashMap容器 577
14.8.4 存储、检索和移除
对象 578
14.8.5 处理地图中的所有
元素 579
14.9 小结 589
14.10 练习 589
第15章 一组有用的类 591
15.1 数组的实用方法 591
15.1.1 填充数组 591
15.1.2 复制数组 593
15.1.3 比较数组 593
15.1.4 数组的排序 594
15.1.5 搜索数组 598
15.1.6 将数组的内容用作
字符串 600
15.2 Observable和Observer
对象 601
15.2.1 定义Observable对象的
类 602
15.2.2 Observable类的方法 602
15.3 生成随机数 605
15.4 日期和时间 608
15.4.1 Date类 608
15.4.2 解释Date对象 609
15.4.3 公历 612
15.5 正则表达式 618
15.6 使用Scanner对象 637
15.6.1 创建Scanner对象 637
15.6.2 从Scanner对象获取
输入 638
15.6.3 测试标记 640
15.6.4 为标记定义自己的
模式 641
15.7 小结 642
15.8 练习 642
第16章 线程 645
16.1 理解线程 645
16.1.1 创建线程 647
16.1.2 停止线程 652
16.1.3 连接线程 653
16.1.4 线程的调度 654
16.1.5 实现Runnable接口 654
16.2 管理线程 656
16.2.1 同步 657
16.2.2 死锁 672
16.3 使用执行器 674
16.3.1 使用执行器 674
16.3.2 执行Callable
评论