第1章 计算思维与Java设计初步体验 1
1.1 认识计算思维 2
1.1.1 计算思维的内容 3
1.1.2 分解 3
1.1.3 模式识别 5
1.1.4 模式概括与抽象 5
1.1.5 算法 6
1.2 进入程序设计的奇幻世界 8
1.2.1 程序设计语言的分类 8
1.2.2 程序设计的流程 10
1.2.3 程序编写的原则 10
1.3 程序设计逻辑的简介 12
1.3.1 结构化程序设计 12
1.3.2 面向对象程序设计 13
1.3.3 在面向对象程序设计中的其他关键术语 15
1.4 Java语言的特性 16
1.4.1 简单性 16
1.4.2 跨平台性 17
1.4.3 解释型 17
1.4.4 严谨性 18
1.4.5 例外处理 18
1.4.6 多线程 18
1.4.7 自动垃圾回收 18
1.4.8 泛型程序设计 19
1.5 Java的开发环境版本与架构 19
1.5.1 程序开发工具介绍 19
1.5.2 JDK的下载与安装 19
1.5.3 设置JDK搜索路径的环境变量 23
1.5.4 Java程序结构的解析 28
1.6 认识Java SE 11新增的功能 31
课后习题 33
第2章 认识数据处理与表达式 36
2.1 数据类型介绍 37
2.1.1 整数类型 37
2.1.2 浮点数类型 38
2.1.3 布尔类型 40
2.1.4 字符类型 41
2.2 变量与常数 42
2.2.1 变量与常数的声明 42
2.2.2 变量与常数的命名规则 43
2.3 基本输入与输出功能 46
2.3.1 在屏幕上输出数据 46
2.3.2 从键盘输入数据 47
2.4 数据类型的转换 49
2.4.1 由小变大模式 49
2.4.2 由大变小模式 49
2.5 表达式与运算符 50
2.5.1 算术运算符 51
2.5.2 关系运算符 53
2.5.3 逻辑运算符 55
2.5.4 移位运算符 57
2.5.5 赋值运算符 58
2.5.6 运算符的优先级 60
2.6 高级应用练习实例 62
2.6.1 多重逻辑运算符的应用 62
2.6.2 位逻辑运算符的运算练习 62
2.6.3 自动类型转换与强制类型转换的比较 63
课后习题 64
第3章 流程控制 67
3.1 认识流程控制 68
3.2 条件选择语句与条件运算符 70
3.2.1 if相关语句 70
3.2.2 if-else相关语句 72
3.2.3 if-else-if相关语句 74
3.2.4 嵌套if语句 76
3.2.5 switch条件选择语句 78
3.2.6 条件运算符 81
3.3 计数循环与条件循环 82
3.3.1 for循环 82
3.3.2 嵌套for循环 84
3.3.3 while循环 85
3.3.4 do-while循环 87
3.3.5 无限循环 88
3.4 控制跳转语句 88
3.4.1 break语句 88
3.4.2 continue语句 90
3.4.3 return语句 92
3.4.4 for-each的for循环 93
3.5 高级应用练习实例 96
3.5.1 使用条件选择语句进行考试成绩的评级 96
3.5.2 闰年的判断与应用 97
3.5.3 使用各种循环计算1~50的累加之和 98
课后习题 99
第4章 过程与函数 102
4.1 结构化与模块化的程序设计 102
4.2 声明并定义类方法 103
4.2.1 含参数行的类方法 104
4.2.2 含返回值的类方法 105
4.2.3 参数传递方式 106
4.3 类变量与变量的作用域 106
4.3.1 类变量 106
4.3.2 变量的作用域 107
4.4 高级应用练习实例 109
4.4.1 阶乘函数 109
4.4.2 斐波那契数列 111
4.4.3 汉诺塔问题 112
课后习题 115
第5章 数组结构 117
5.1 数组简介 118
5.1.1 声明数组的方法 119
5.1.2 指定数组元素的个数 121
5.1.3 数组的另一种声明方法 122
5.1.4 将指定值存入数组 122
5.2 多维数组 123
5.2.1 二维数组 124
5.2.2 三维数组 125
5.2.3 不规则数组 127
5.3 数组的应用与对象类 128
5.3.1 重新创建数组 128
5.3.2 复制数组的方式 129
5.3.3 对象数组 132
5.4 Arrays类 133
5.4.1 fill方法 134
5.4.2 equals 135
5.5 高级应用练习实例 136
5.5.1 矩阵的相加 136
5.5.2 冒泡排序法 137
5.5.3 彩票号码产生器 140
5.5.4 计算学生成绩分布并给出简易成绩分布示意图 141
5.5.5 Arrays类中方法的调用 143
5.5.6 多项式相加 144
5.5.7 插入排序法 146
课后习题 148
第6章 字符与字符串的声明与应用 151
6.1 字符的声明与使用 151
6.1.1 字符的表示法 152
6.1.2 Character类的方法 152
6.2 字符串类 153
6.2.1 创建字符串 153
6.2.2 以字符数组构建法来创建字符串 156
6.3 String类的方法 157
6.3.1 字符串的长度 158
6.3.2 字符串的查找 159
6.3.3 字符串替换 161
6.3.4 字符串的比较 162
6.3.5 字符串的转换 165
6.3.6 字符串的串接 166
6.3.7 提取字符串中的字符或子字符串 168
6.4 StringBuffer类 169
6.4.1 创建StringBuffer类的对象 170
6.4.2 调用StringBuffer类的方法 170
6.5 高级应用练习实例 176
6.5.1 利用字符串数据进行加法运算 176
6.5.2 调用endsWith()方法筛选出文件名 177
课后习题 178
第7章 面向对象程序设计的初探 180
7.1 面向对象的概念 180
7.1.1 消息 181
7.1.2 类 182
7.1.3 继承 183
7.2 封装与信息隐藏 183
7.3 类的命名规则和类的声明与定义 184
7.3.1 类的声明 185
7.3.2 类的成员变量 185
7.3.3 类的成员方法 186
7.3.4 类参数和自变量 187
7.4 类的构造函数 189
7.5 对象的创建与成员数据的使用 191
7.5.1 对象的创建 191
7.5.2 对象的赋值 192
7.5.3 对象的使用 192
7.5.4 修饰词与对象的搭配 194
7.6 对象的作用域与生命周期 196
7.6.1 对象的作用域 196
7.6.2 对象的生命周期 196
7.7 高级应用练习实例 197
7.7.1 计算圆面积的类 197
7.7.2 声明并定义Birthday类 198
7.7.3 二叉树的链表表示法 199
课后习题 202
第8章 继承与多态 204
8.1 认识继承关系 204
8.1.1 基类和派生类 205
8.1.2 单一继承 207
8.1.3 继承权限处理的原则 210
8.1.4 构造函数的调用顺序 215
8.1.5 类构造函数与继承关系 217
8.1.6 类成员的高级处理 218
8.2 多态 223
8.2.1 静态多态 223
8.2.2 动态多态 224
8.2.3 多态的实现 226
8.3 高级应用练习实例 228
8.3.1 编写计算图书销售金额的类 229
8.3.2 以继承方式声明并定义Baseball类 230
课后习题 231
第9章 抽象类、接口、程序包与嵌套类的作用 235
9.1 抽象类 235
9.1.1 抽象类的使用时机 236
9.1.2 声明、定义和使用抽象类 237
9.1.3 抽象类的实现——计算面积 239
9.1.4 使用抽象类存取子类 240
9.2 认识接口 242
9.2.1 接口的定义 242
9.2.2 声明、定义与使用自定义接口 243
9.2.3 使用接口变量创建对象 245
9.2.4 实现多重继承 246
9.2.5 声明子接口 248
9.3 大型程序的开发与应用——程序包的使用 249
9.3.1 程序分解的概念 249
9.3.2 程序包的需求 250
9.3.3 包装与导入程序包 250
9.3.4 导入程序包 252
9.4 类的嵌套结构 254
9.4.1 内部类与静态嵌套类 254
9.4.2 匿名类的介绍 256
9.5 高级应用练习实例 258
9.5.1 以抽象类来实现显示汽车数据的功能 259
9.5.2 用接口来实现多重继承 260
课后习题 261
第10章 Java常用类 265
10.1 Math类 265
10.1.1 Math类的常数 265
10.1.2 随机数的方法 266
10.1.3 数学类的方法 267
10.2 Number类 270
10.2.1 Number类简介 270
10.2.2 Number类的常用方法 271
10.2.3 字符串与数值转换 272
10.3 Vector类 274
10.3.1 Vector类简介 275
10.3.2 Vector类的常用方法 275
10.4 高级应用练习实例 277
10.4.1 彩票幸运号码产生器 277
10.4.2 在数组集合加入不同的数据类型 278
10.4.3 矩阵相乘 279
10.4.4 稀疏矩阵 281
课后习题 284
第11章 窗口环境与事件处理 286
11.1 初探AWT程序包 286
11.1.1 我的第一个窗口程序 287
11.1.2 Pack方法 293
11.2 版面布局 293
11.2.1 流式版面布局 293
11.2.2 边框版面布局 296
11.2.3 网格版面布局 298
11.3 事件处理的实现 300
11.3.1 事件类 301
11.3.2 事件来源与监听器接口 303
11.4 低级事件类 304
11.4.1 ComponentEvent类 305
11.4.2 InputEvent类 305
11.4.3 WindowEvent类 305
11.4.4 MouseEvent类 308
11.4.5 KeyEvent类 309
11.5 高级应用练习实例 311
课后习题 312
第12章 Swing程序包开发守则 314
12.1 Swing程序包的简介 314
12.1.1 Swing窗口的层级结构 316
12.1.2 Swing相关组件的说明 316
12.2 调整Swing组件外观 320
12.3 JButton(按钮)组件 324
12.4 JCheckBox(复选框)组件 329
12.5 JRadioButton(单选按钮)组件 332
12.6 JTextField(文本字段)与JTextArea(文本框)组件 336
12.7 JList(列表框)组件 340
12.8 创建页签 344
12.9 高级应用练习实例 345
12.9.1 盒式版面布局法 345
12.9.2 重叠版面布局法 347
课后习题 349
第13章 绘图与多媒体功能开发 351
13.1 Java的基本绘图程序包 351
13.1.1 draw成员方法 353
13.1.2 画线 355
13.1.3 画矩形 356
13.1.4 画圆和画椭圆 358
13.1.5 窗口颜色 359
13.1.6 图像重新绘制功能 361
13.2 动画处理与声音播放 363
13.3 高级应用练习实例 366
课后习题 368
第14章 例外处理 370
14.1 什么是例外处理 370
14.1.1 Error类 371
14.1.2 Exception类 372
14.2 认识例外处理 373
14.2.1 例外处理的语法说明 373
14.2.2 finally的使用 375
14.2.3 例外处理的执行流程 376
14.3 抛出例外功能 376
14.3.1 使用throw抛出例外 376
14.3.2 使用throws抛出例外事件 378
14.4 调用方法处理例外 379
14.5 调用类处理例外 381
14.6 例外结构的介绍 382
14.6.1 多个catch程序区块 382
14.6.2 getMessage() 383
14.7 自定义例外处理的类 385
14.8 高级应用练习实例 386
课后习题 387
第15章 数据流与文件管理 389
15.1 Java的基本输入输出控制 389
15.1.1 标准输出数据流 390
15.1.2 标准输入数据流 392
15.1.3 java.io程序包 394
15.2 字符数据流 394
15.2.1 抽象基类——Reader与Writer 395
15.2.2 常用的字符数据流类 397
15.3 字节数据流 402
15.3.1 InputStream类与OutputStream类 403
15.3.2 输入数据流类(InputStream) 404
15.3.3 输出数据流类(OutputStream) 406
15.3.4 其他字节数据流类 409
15.4 文件数据流 413
15.4.1 File类 413
15.4.2 文件名过滤接口 418
15.4.3 文件IO数据流 419
15.5 关于缓冲区 422
15.5.1 字节数据流使用缓冲区 422
15.5.2 字符数据流使用缓冲区 425
15.6 高级应用练习实例 427
15.6.1 文件输入数据流——FileInputStream 428
15.6.2 文件输出数据流——FileOutputStream 428
课后习题 430
第16章 泛型与集合对象 432
16.1 泛型的基础概念 432
16.2 集合对象 435
16.2.1 Iterable接口 435
16.2.2 Collection接口 436
16.3 List接口 436
16.3.1 LinkedList类 437
16.3.2 ArrayList类 439
16.4 Set接口 441
16.4.1 HashSet类 442
16.4.2 SortedSet接口 443
16.4.3 TreeSet类 444
16.5 Map接口与SortedMap接口 445
16.5.1 HashMap类 446
16.5.2 TreeMap类 446
16.6 Lambda表达式 448
课后习题 450
第17章 深度剖析多线程 452
17.1 线程的概念 452
17.1.1 顺序执行 453
17.1.2 多任务处理 454
17.2 Java的多任务处理 455
17.2.1 Timer类与TimerTask类 455
17.2.2 多线程机制——Thread类 460
17.2.3 多线程机制——Runnable接口 464
17.3 管理线程 466
17.3.1 线程的生命周期 466
17.3.2 管理线程的方法 467
17.4 多线程高级处理 472
17.4.1 线程分组 472
17.4.2 数据同步操作的问题 474
17.5 高级应用练习实例 479
课后习题 481
第18章 精通网络程序设计 483
18.1 认识网络应用程序 483
18.1.1 网络的基本概念 484
18.1.2 网络应用程序的必备程序包 484
18.1.3 IP地址简介 485
18.2 InetAddress类 485
18.2.1 InetAddress类中的静态方法 487
18.2.2 InetAddress类中的非静态方法 488
18.3 用Socket来建立通信 489
18.3.1 Java的Socket接口 490
18.3.2 Socket应用程序 490
18.3.3 服务器端与Socket 491
18.3.4 客户端与Socket 495
18.4 UDP通信 497
18.4.1 DatagramSocket类 497
18.4.2 DatagramPacket类 498
18.5 URL类 502
18.6 高级应用练习实例 506
18.6.1 查询网络域名所属的IP地址 506
18.6.2 使用URL读取文件内容 507
课后习题 508
附录 课后习题参考答案 510