第1章 Java基础 1
1.1 下载和安装Java 1
1.1.1 在Windows上的安装 1
1.1.2 在Linux系统上的安装 2
1.1.3 在Mac OS X系统上的安装 2
1.1.4 设置系统环境变量 2
1.1.5 测试安装 3
1.1.6 下载JavaAPI文档 3
1.2 第一个Java程序 3
1.2.1 编写Java程序 3
1.2.2 编译Java程序 4
1.2.3 运行Java程序 4
1.3 Java编码惯例 5
1.4 集成开发环境 5
1.5 本章小结 6
第2章 语言基础 7
2.1 ASCII和Unicode 7
2.2 分隔符 8
2.3 基本类型 8
2.4 变量 9
2.5 常量 11
2.6 字面值 11
2.6.1 整数字面值 11
2.6.2 浮点数字面值 12
2.6.3 布尔字面值 13
2.6.4 字符字面值 13
2.7 基本类型转换 14
2.7.1 加宽转换 14
2.7.2 收窄转换 14
2.8 操作符 15
2.8.1 一元操作符 16
2.8.2 算术操作符 17
2.8.3 相等操作符 18
2.8.4 关系操作符 18
2.8.5 条件操作符 19
2.8.6 位移操作符 19
2.8.7 赋值操作符 20
2.8.8 整数按位操作符&|∧ 20
2.8.9 逻辑操作符&|∧ 21
2.8.10 操作符优先级 21
2.8.11 提升 22
2.9 注释 22
2.10 本章小结 23
第3章 语句 24
3.1 概览 24
3.2 if语句 25
3.3 while语句 26
3.4 do-while循环 28
3.5 for语句 28
3.6 break语句 31
3.7 continue语句 32
3.8 switch语句 32
3.9 本章小结 33
第4章 对象和类 34
4.1 什么是对象 34
4.2 Java类 34
4.2.1 字段 36
4.2.2 方法 36
4.2.3 Main方法 36
4.2.4 构造方法 37
4.2.5 Varargs 37
4.2.6 UML类图中的类成员 38
4.3 创建对象 38
4.4 null关键字 38
4.5 对象的内存分配 39
4.6 Java包 40
4.7 封装和访问控制 41
4.7.1 类访问控制修饰符 41
4.7.2 类成员访问控制修饰符 42
4.8 this关键字 44
4.9 使用其他的类 45
4.10 final变量 46
4.11 静态成员 47
4.12 静态final变量 49
4.13 静态导入 50
4.14 变量作用域 50
4.15 方法重载 51
4.16 静态工厂方法 52
4.17 传值或传引用 53
4.18 加载、连接和初始化 53
4.18.1 加载 54
4.18.2 连接 54
4.18.3 初始化 54
4.19 对象创建初始化 55
4.20 垃圾收集 57
4.21 本章小结 57
第5章 核心类 58
5.1 java.lang.Object 58
5.2 java.lang.String 59
5.2.1 比较两个字符串 59
5.2.2 字符串字面值 60
5.2.3 转义特定字符 60
5.2.4 字符串上的swithh 61
5.2.5 String类的构造方法 61
5.2.6 String类的方法 62
5.3 java.lang.StringBuffer和java.lang.StringBuilder 64
5.3.1 StringBuilder类的构造方法 64
5.3.2 StringBuilder类的方法 64
5.4 基本类型包装器 65
5.4.1 java.lang.Boolean 66
5.4.2 java.lang.Character 66
5.5 java.lang.Class 66
5.6 java.lang.System 67
5.7 java.util.Scanner 70
5.8 本章小结 70
第6章 数组 71
6.1 概览 71
6.2 遍历数组 72
6.3 java.utilArrays类 73
6.4 修改数组的大小 73
6.5 查找一个数组 74
6.6 给main方法传入一个字符串数组 75
6.7 多维数组 76
6.8 本章小结 76
第7章 继承 77
7.1 概览 77
7.1.1 extends关键字 77
7.1.2 is-a关系 78
7.2 可访问性 79
7.3 方法覆盖 80
7.4 调用超类的构造方法 81
7.5 调用超类的隐藏方法 82
7.6 类型强制转换 83
7.7 final类 83
7.8 instanceof操作符 84
7.9 本章小结 84
第8章 错误处理 85
8.1 捕获异常 85
8.2 没有catch的try 86
8.3 捕获多个异常 87
8.4 try-with-resource语句 87
8.5 java.1 ang.Exception类 88
8.6 从方法中抛出一个异常 89
8.7 用户定义的异常 90
8.8 异常处理的注意事项 91
8.9 本章小结 91
第9章 操作数字 92
9.1 装箱和拆箱 92
9.2 数字解析 92
9.3 数字格式化 93
9.4 使用java.text.NumberFormat进行数字解析 94
9.5 java.lang.Math类 94
9.6 计算货币 95
9.7 生成随机数 95
9.8 本章小结 96
第10章 接口和抽象类 97
10.1 接口的概念 97
10.2 技术上的接口 98
10.2.1 接口中的字段 99
10.2.2 抽象方法 99
10.2.3 扩展一个接口 99
10.3 默认方法 100
10.4 静态方法 100
10.5 基类 100
10.6 抽象类 102
10.7 本章小结 102
第11章 多态 103
11.1 概览 103
11.2 多态的应用 105
11.3 多态和反射 106
11.4 本章小结 107
第12章 枚举 108
12.1 概览 108
12.2 类中的enum 109
12.3 java.1 ang.Enum类 109
12.4 遍历枚举值 110
12.5 enum上的switch 110
12.6 枚举成员 110
12.7 本章小结 112
第13章 操作日期和时间 113
13.1 概述 113
13.2 Instant类 113
13.3 LocalDate 114
13.4 Period 116
13.5 LocalDateTime 117
13.6 时区 118
13.7 ZonedDateTime 119
13.8 Duration 120
13.9 格式化日期时间 123
13.10 解析一个日期时间 124
13.11 使用旧的日期和时间API 125
13.11.1 java.util.Date类 125
13.11.2 java.util.Calendar类 125
13.11.3 使用DateFormat解析和格式化 126
13.12 本章小结 128
第14章 集合框架 129
14.1 集合框架概览 129
14.2 Collection接口 130
14.3 List和ArrayList 130
14.4 使用Iterator和for遍历一个集合 132
14.5 Set和HashSet 133
14.6 Queue和LinkedList 133
14.7 集合转换 134
14.8 Map和HashMap 135
14.9 使得对象可比较和可排序 136
14.9.1 使用java.1 ang.Comparable 136
14.9.2 使用Comparator 138
14.10 本章小结 141
第15章 泛型 142
15.1 没有泛型的日子 142
15.2 泛型类型 142
15.3 使用不带类型参数的泛型类型 145
15.4 使用?通配符 145
15.5 在方法中使用界限通配符 147
15.6 泛型方法 148
15.7 编写泛型类型 148
15.8 本章小结 149
第16章 输入/输出 150
16.1 文件系统和路径 150
16.2 文件和目录的处理和操作 152
16.2.1 创建和删除文件和目录 152
16.2.2 获取一个目录对象 152
16.2.3 复制和移动文件 153
16.2.4 从文件读取和写入到文件 153
16.3 输入/输出流 155
16.4 读二进制数据 155
16.5 写二进制数据 158
16.6 写文本(字符) 161
16.6.1 Writer 161
16.6.2 OutputStreamWriter 162
16.6.3 PrintWriter 163
16.7 读文本(字符) 164
16.7.1 Reader 164
16.7.2 InputStreamReader 165
16.7.3 BufferedReader 166
16.8 使用PrintStream记录日志 167
16.9 随机访问文件 168
16.10 对象序列化 171
16.11 本章小结 173
第17章 注解 174
17.1 概览 174
17.1.1 注解和注解类型 174
17.1.2 注解语法 174
17.1.3 Annotation接口 175
17.2 标准注解 175
17.2.1 Override 175
17.2.2 Deprecated 176
17.2.3 SuppressWarnings 177
17.3 常用注解 178
17.4 标准元-注解 178
17.4.1 Documented 178
17.4.2 Retention 179
17.4.3 Retention 179
17.4.4 Target 179
17.5 定制注解类型 179
17.5.1 编写自己的定制注解类型 180
17.5.2 使用定制注解类型 180
17.5.3 使用反射来查询注解 180
17.6 本章小结 181
第18章 嵌套类和内部类 182
18.1 嵌套类概览 182
18.2 静态嵌套类 183
18.3 成员内部类 184
18.4 局部内部类 185
18.5 匿名内部类 187
18.6 嵌套类和内部类的背后 188
18.7 本章小结 189
第19章 线程 190
19.1 Java线程简介 190
19.2 创建一个线程 190
19.2.1 扩展线程 191
19.2.2 实现Runnable 192
19.3 使用多线程 193
19.4 线程优先级 194
19.5 停止线程 196
19.6 同步 198
19.6.1 线程干扰 198
19.6.2 原子操作 199
19.6.3 方法同步 199
19.6.4 块同步 200
19.7 可见性 200
19.8 线程协调 202
19.9 使用定时器 206
19.10 本章小结 208
第20章 并发工具 209
20.1 原子变量 209
20.2 Executor和ExecutorService 210
20.3 Callable和Future 213
20.4 锁 216
20.5 本章小结 217
第21章 国际化 218
21.1 本地化 218
21.2 国际化应用程序 219
21.2.1 将文本性部分隔离到属性文件中 220
21.2.2 使用ResourceBundle读取属性文件 221
21.3 一个国际化的Swing应用程序 221
21.4 本章小结 223
第22章 网络 224
22.1 网络概览 224
22.2 超文本传输协议(HTTP) 224
22.2.1 HTTP请求 225
22.2.2 HTTP响应 225
22.3 java.net.URL 226
22.3.1 解析URL 227
22.3.2 读取Web资源 227
22.4 java.net.URLConnection 228
22.4.1 读Web资源 229
22.4.2 写到一个Web服务器 230
22.5 java.net.Socket 231
22.6 java.net.ServerSocket 232
22.7 一个Web服务器应用程序 233
22.7.1 HttpServer类 233
22.7.2 Request类 236
22.7.3 Response类 238
22.7.4 运行应用程序 239
22.8 本章小结 240
第23章 Android简介 241
23.1 概览 241
23.2 应用程序开发简介 241
23.3 Android版本 243
23.4 在线资源 244
23.5 应该使用哪个版本的Java 244
第24章 初识Android 245
24.1 下载和安装Android Studio 245
24.1.1 在Windows系统上安装 245
24.1.2 在Mac OS X系统上安装 249
24.1.3 在Linux系统上安装 250
24.2 创建应用程序 250
24.3 在模拟器上运行应用程序 253
24.4 应用程序结构 254
24.4.1 Android清单 255
24.4.2 apk文件 256
24.5 调试应用程序 256
24.5.1 日志 256
24.5.2 设置断点 257
24.6 Android SDK Manager 258
24.7 创建一个Android虚拟设备 258
24.8 在物理设备上运行应用程序 261
24.9 在Android Studio中打开一个项目 261
24.10 使用Java 8 262
24.11 删除支持的库 262
24.12 本章小结 263
第25章 活动 264
25.1 活动的生命周期 264
25.2 ActivityDemo示例 265
25.3 修改应用程序图标 267
25.4 使用Android资源 268
25.5 启动另一个活动 268
25.6 活动相关的意图 271
25.7 本章小结 273
第26章 UI组件 274
26.1 概览 274
26.2 使用Android Studio UI工具 274
26.3 使用基本组件 275
26.4 Toast 278
26.5 通知 280
26.6 本章小结 284
第27章 布局 285
27.1 概览 285
27.2 LinearLayout 285
27.3 RelativeLayout 287
27.4 FrameLayout 290
27.5 TableLayout 291
27.6 GridLayout 292
27.7 通过编程来创建布局 293
27.8 本章小结 294
第28章 监听器 295
28.1 概览 295
28.2 使用onClick属性 296
28.3 实现一个监听器 299
28.4 本章小结 303
第29章 操作栏 304
29.1 概览 304
29.2 添加操作项 305
29.3 添加下拉式导航 308
29.4 回退一步 311
29.5 本章小结 311
第30章 菜单 312
30.1 概览 312
30.2 菜单文件 312
30.3 选项菜单 313
30.4 上下文菜单 315
30.5 弹出式菜单 318
30.6 本章小结 320
第31章 ListView 321
31.1 概览 321
31.2 创建一个ListAdapter 322
31.3 使用一个ListView 323
31.4 扩展ListActivity并编写一个定制的适配器 325
31.5 样式化选取的项 328
31.6 本章小结 330
第32章 GridView 331
32.1 概览 331
32.2 使用GridView 331
32.3 本章小结 335
第33章 样式和主题 336
33.1 概览 336
33.2 使用样式 337
33.3 使用主题 339
33.4 本章小结 340
第34章 位图处理 341
34.1 概览 341
34.2 位图处理 342
34.3 本章小结 346
第35章 图形和定制视图 347
35.1 概览 347
35.2 硬件加速 347
35.3 创建一个定制视图 348
35.4 绘制基本形状 348
35.5 绘制文本 349
35.6 透明度 349
35.7 Shader 350
35.8 裁剪 350
35.9 使用路径 351
35.10 CanvasDemo应用程序 352
35.11 本章小结 355
第36章 片段 356
36.1 片段的生命周期 356
36.2 片段管理 358
36.3 使用片段 358
36.4 扩展ListFragment并使用FragmentManager 363
36.5 本章小结 366
第37章 多面板布局 367
37.1 概览 367
37.2 多面板示例 369
37.2.1 布局和活动 371
37.2.2 片段类 373
37.2.3 运行应用程序 377
37.3 本章小结 377
第38章 动画 378
38.1 概览 378
38.2 属性动画 378
38.2.1 Animator 378
38.2.2 ValueAnimator 378
38.2.3 ObjectAnimator 379
38.2.4 AnimatorSet 379
38.3 动画项目 380
38.4 本章小结 383
第39章 偏好 384
39.1 SharedPreference 384
39.2 PreferenceAPI 384
39.3 使用Preference 385
39.4 本章小结 389
第40章 操作文件 390
40.1 概览 390
40.1.1 内部存储 390
40.1.2 外部存储 391
40.2 创建一个Notes应用程序 392
40.3 访问公共存储 397
40.4 本章小结 400
第41章 操作数据库 401
41.1 概览 401
41.2 DatabaseAPI 401
41.2.1 SQLiteOpenHelper类 401
41.2.2 SQLiteDatabase类 402
41.2.3 Cursor接口 403
41.3 示例 403
41.4 本章小结 410
第42章 获取图片 411
42.1 概览 411
42.2 使用相机 412
42.3 Camera API 415
42.3.1 管理相机 415
42.3.2 管理 SurfaceHolder 416
42.4 使用Camera API 417
42.5 本章小结 421
第43章 制作视频 422
43.1 使用内建意图 422
43.2 MediaRecorder 426
43.3 使用MediaRecorder 427
43.4 本章小结 430
第44章 声音录制 431
44.1 MediaRecorder类 431
44.2 示例 431
44.3 本章小结 435
第45章 处理Handler 436
45.1 概览 436
45.2 示例 436
45.3 本章小结 439
第46章 异步工具 440
46.1 概览 440
46.2 示例 440
46.3 本章小结 444
第47章 服务 445
47.1 概览 445
47.2 服务API 445
47.3 声明服务 446
47.4 服务示例 446
47.5 本章小结 451
第48章 广播接收器 452
48.1 概览 452
48.2 基于时钟的广播接收器 452
48.3 取消通知 454
48.4 本章小结 457
第49章 闹钟服务 458
49.1 概览 458
49.2 示例 459
49.3 本章小结 463
第50章 内容提供者 464
50.1 概览 464
50.2 ContentProvider类 465
50.2.1 query方法 465
50.2.2 insert方法 465
50.2.3 update方法 465
50.2.4 delete方法 466
50.3 创建一个内容提供者 466
50.4 消费内容提供者 475
50.5 本章小结 476
附录A javac 477
A.1 选项 477
A.1.1 标准选项 477
A.1.2 非标准选项 479
A.1.3 -J选项 480
A.2 命令行参数文件 480
附录B java 481
B.1 选项 481
B.1.1 标准选项 481
B.1.2 非标准选项 483
附录C jar 485
C.1 语法 485
C.2 选项 486
C.3 示例 487
C.3.1 创建 487
C.3.2 更新 487
C.3.3 列出 487
C.3.4 提取 487
C.3.5 索引 487
C.4 设置应用程序入口点 488
附录D NetBeans 489
D.1 下载和安装 489
D.2 创建一个项目 489
D.3 创建一个类 491
D.4 运行一个Java类 491
D.5 添加库 491
D.6 调试代码 492
附录E Eclipse 493
E.1 下载和安装 493
E.2 添加一个JRE 494
E.3 创建一个Java项目 495
E.4 创建一个类 496
E.5 运行一个Java类 497
E.6 添加库 497
E.7 调试代码 497
E.8 有用的快捷方式 498