第1部分 入门 2
第1章 计算机科学及媒体计算简介 2
1.1 什么是计算机科学 2
1.2 计算机能理解什么 5
1.3 媒体计算:为什么将媒体数字化 7
1.4 大众的计算机科学 8
1.4.1 交流 9
1.4.2 流程 9
习题 9
深入学习 10
第2章 Java简介 11
2.1 Java 11
2.1.1 Java的历史 11
2.1.2 对象和类 12
2.2 DrJava 12
2.3 Java的基本概念 15
2.3.1 数学运算符 15
2.3.2 打印语句的结果 16
2.3.3 数学表达式中的数据类型 17
2.3.4 数据类型的强制转换 18
2.3.5 关系运算符 18
2.3.6 字符串 19
2.4 变量 20
2.4.1 声明变量 20
2.4.2 在计算中使用变量 21
2.4.3 变量的内存图 22
2.4.4 对象变量 23
2.4.5 变量重用 24
2.4.6 对象的多重引用 25
2.5 概念小结 26
2.5.1 语句 26
2.5.2 关系运算符 26
2.5.3 类型 26
2.5.4 强制转换 27
2.5.5 变量 27
习题 28
深入学习 29
第3章 程序设计简介 30
3.1 编程和命名 30
3.2 文件和文件名 31
3.3 类和对象方法 32
3.3.1 调用类方法 32
3.3.2 执行对象方法 33
3.4 让小乌龟动起来 34
3.4.1 定义类 34
3.4.2 创建对象 34
3.4.3 向对象发送消息 36
3.4.4 控制对象状态 37
3.4.5 乌龟的附加功能 38
3.5 创建方法 39
3.5.1 带输入的方法 44
3.6 与媒体共事 46
3.6.1 创建图片对象 46
3.6.2 显示图片 48
3.6.3 变量替换 49
3.6.4 对象引用 51
3.6.5 播放声音 51
3.6.6 媒体命名 52
3.6.7 方法的结果命名 52
3.7 概念小结 53
3.7.1 调用对象方法 53
3.7.2 调用类方法 54
3.7.3 创建对象 54
3.7.4 创建新方法 54
对象和方法总结 55
习题 55
深入学习 57
第2部分 图形 60
第4章 使用循环修改图片 60
4.1 图片怎样编码 60
4.1.1 颜色的表示法 63
4.2 处理图片 66
4.2.1 浏览图片 70
4.3 改变颜色的值 71
4.3.1 使用for-each循环 71
4.3.2 使用while循环 72
4.3.3 增加/减少红色(绿色、蓝色) 75
4.3.4 生成日落 85
4.3.5 搞清方法的意义 86
4.3.6 变量名范围 89
4.3.7 使用for循环 92
4.3.8 变亮和变暗 93
4.3.9 创建底片 95
4.3.10 转换成灰度 95
4.4 概念小结 97
4.4.1 数组 97
4.4.2 循环 97
4.4.3 注释 98
对象和方法小结 99
习题 100
深入学习 102
第5章 在矩阵中修改像素 103
5.1 复制像素 103
5.1.1 利用嵌套循环遍历像素 103
5.1.2 镜像图片 106
5.2 复制和改造图片 112
5.2.1 复制 113
5.2.2 创作抽象拼贴画 117
5.2.3 混合图片 122
5.2.4 旋转 125
5.2.5 缩放比例 127
5.3 概念小结 133
5.3.1 二维数组 133
5.3.2 嵌套循环 133
5.3.3 方法的返回值 134
5.3.4 方法重载 135
对象与方法小结 135
习题 136
深入学习 137
第6章 不同条件下修改像素 138
6.1 有条件的像素变化 138
6.1.1 对比色彩 139
6.1.2 更换颜色 140
6.1.3 减轻红眼 143
6.2 简单的边缘检测法:有两种情况的条件语句 144
6.2.1 否定 144
6.2.2 同时测试两种情况 145
6.2.3 两种选择的条件 145
6.2.4 简单的边缘检测 145
6.3 棕色特效与多色调分色印照片:利用多条件语句选择颜色 147
6.4 高亮显示 153
6.5 像素结合:模糊化 155
6.6 背景剔除 157
6.7 色度键 161
6.8 概念小结 163
6.8.1 布尔表达式 163
6.8.2 连接布尔表达式 164
6.8.3 条件执行 164
习题 165
第7章 画图 169
7.1 利用Graphics类画图 169
7.1.1 用Graphics方法画图 171
7.1.2 矢量和位图表示 176
7.1.3 画文本(字符串) 178
7.2 作为特殊画图过程的程序 180
7.2.1 我们为什么要编写程序 183
7.3 利用Graphics2D进行高级制图 183
7.3.1 设置画笔的宽度 184
7.3.2 通过绘制图像来复制图片 185
7.3.3 通用缩放 188
7.3.4 切变 189
7.3.5 用GradientPaint画图 190
7.3.6 接口 191
7.3.7 用AlphaComposite混合图片 192
7.3.8 剪辑 194
7.4 概念小结 196
7.4.1 包 196
7.4.2 预设的Java类 196
7.4.3 继承 197
7.4.4 接口 197
对象和方法摘要 197
习题 198
第3部分 声音 202
第8章 修改声音样本 202
8.1 声音编码 202
8.1.1 声音的物理性 202
8.1.2 探测声音 205
8.1.3 对声音进行编码 206
8.2 处理声音 209
8.2.1 打开声音并处理样本 210
8.2.2 使用MediaTools查找声音 212
8.2.3 引入循环 214
8.3 改变音量 216
8.3.1 增大音量 217
8.3.2 真的可以工作吗 218
8.3.3 减小音量 221
8.3.4 使用for循环 222
8.3.5 搞清方法的意思 223
8.4 规格化声音 224
8.4.1 生成剪辑 226
8.5 概念小结 228
8.5.1 数组 228
8.5.2 循环 228
8.5.3 条件执行 229
对象与方法汇总 230
习题 231
深入学习 234
第9章 用值域修改样本 235
9.1 对声音中的不同片段进行不同的处理 235
9.2 创建声音剪辑 237
9.3 拼接声音 239
9.4 倒置声音 245
9.5 镜像声音 246
9.6 概念小结 247
9.6.1 循环的范围 247
9.6.2 从方法返回值 247
习题 248
深入学习 250
第10章 通过组合片段创建声音 251
10.1 用叠加方式组合声音 251
10.2 声音的混合 252
10.3 创建一段回声 254
10.4 如何用键盘采样 257
10.5 叠加合成 262
10.5.1 创建正弦波 262
10.5.2 用静态法创建声音 263
10.5.3 叠加正弦波 265
10.5.4 验证结果 266
10.5.5 方波 267
10.5.6 三角波 268
10.6 现代音乐合成 269
10.6.1 MP3 270
10.6.2 MIDI 270
10.6.3 私有方法 272
10.7 概念小结 274
10.7.1 类方法 274
10.7.2 私有方法 275
10.7.3 用多个方法创建程序 275
习题 276
深入学习 277
第11章 创建类 278
11.1 识别对象和字段 278
11.2 定义一个类 279
11.2.1 定义字段 280
11.2.2 继承方法 281
11.2.3 重写继承方法 283
11.2.4 默认字段初始化 284
11.2.5 构造函数的声明 284
11.2.6 调试器的使用 286
11.3 重载构造函数 289
11.4 创建和初始化一个数组 289
11.4.1 计算成绩平均值 290
11.4.2 在调试器中使用单步测试 292
11.5 创建访问器(获取器)和修改器(设置器) 295
11.5.1 创建访问器(获取器) 295
11.5.2 创建修改器(设置器) 296
11.6 创建main方法 298
11.7 Javadoc注释 299
11.7.1 类注释 299
11.7.2 方法注释 299
11.7.3 构造函数注释 300
11.7.4 生成文档 300
11.8 创建另一个类 301
11.8.1 添加构造函数 302
11.8.2 添加访问器和修改器 302
11.9 通过继承方式重用类 304
11.9.1 动态(运行时)绑定 309
11.10 概念小结 309
11.10.1 声明一个类 309
11.10.2 字段 310
11.10.3 构造函数 310
11.10.4 数组 310
11.10.5 使用调试器 311
11.10.6 Javadoc注释 311
习题 311
第4部分 文本、文件、网络、数据库和单一媒体第12章 创建和修改文本 316
12.1 文本和单一媒体 316
12.2 字符串:字符序列 317
12.2.1 统一字符编码标准Unicode 318
12.2.2 String方法 318
12.2.3 用Split界定字符串 321
12.2.4 不带有字体的字符串 323
12.3 文件:保存字符串和其他事务的地方 323
12.3.1 读取文件 324
12.3.2 处理异常 324
12.3.3 使用ArrayList 328
12.3.4 写文件 332
12.3.5 生成套用信函 334
12.3.6 修改程序 335
12.4 其他有用的类 344
12.4.1 另一个有趣的类:Random类 346
12.5 网络:从网页获取文本 348
12.6 使用文本在媒体间转换 353
12.7 概念小结 359
12.7.1 异常 359
12.7.2 读写文件 359
12.7.3 从互联网上读取 360
12.7.4 import语句 360
12.7.5 while循环 360
方法概要 361
习题 362
第13章 为网页制作文本 366
13.1 HTML:网页的标记 366
13.2 用程序生成HTML 370
13.2.1 从目录中创建网页 375
13.2.2 从其他网页创建网页 377
13.2.3 为主页添加随机性 379
13.3 数据库:存储文本的地方 380
13.3.1 键值映射 381
13.3.2 下传 382
13.3.3 泛型 384
13.4 关系数据库 387
13.4.1 SQL 388
13.4.2 准备开始:驱动程序和连接 388
13.4.3 查询数据库 392
13.4.4 使用数据库创建网页 395
13.5 概念小结 397
13.5.1 HTML 397
13.5.2 助手方法 397
13.5.3 抛出异常 397
13.5.4 未命名包 398
13.5.5 HashMap 398
13.5.6 泛型 398
13.5.7 迭代器 398
13.5.8 JDBC和SQL 398
习题 399
深入学习 401
第5部分 电影 404
第14章 编码、处理和创建电影 404
14.1 生成基于帧的动画 405
14.2 与视频帧合作 413
14.2.1 视频处理举例 413
14.3 概念小结 419
习题 419
第6部分 计算机科学中的一些议题 422
第15章 速度 422
15.1 聚焦计算机科学 422
15.2 如何使程序快速 422
15.2.1 计算机真正理解什么 422
15.2.2 编译器和解释器 424
15.2.3 Java的特殊情况 431
15.2.4 如何让解释程序比编译程序更快 432
15.2.5 使搜索更快 433
15.2.6 永远不能结束或无法编写的算法 436
15.2.7 为什么Photoshop比Java程序做得更快 437
15.3 怎样能使计算机快速 438
15.3.1 时钟速率和实际计算 438
15.3.2 存储:什么使计算机变慢 439
15.3.3 显示 440
15.4 概念小结 440
习题 440
深入学习 442
第16章 JavaScript:一种网页编程语言 443
16.1 Javascript的语法 443
16.2 网页内的JavaScript 444
16.3 JavaScript的用户界面 447
16.4 用JavaScript的多媒体 451
16.5 概念小结 452
习题 453
深入学习 453
附录A Java快速参考 454
A.1 变量 454
A.2 声明方法 455
A.3 循环 456
A.4 条件 457
A.5 操作符 457
A.6 转义字符 458
A.7 类 458
A.8 字段 458
A.9 构造函数 459
A.10 包 459
参考文献 461