本书以漫画的形式介绍了Java语言的相关知识。全书共20章,书中首先介绍了Java语言的历史、特点、开发环境、运算符、数据类型、数组、字符串、判断语句、循环语句等基础知识,接着讨论了函数式编程、类与对象、异常、文件操作、集合、图形用户界面、网络通信、多线程等进阶内容,最后通过一个案例向大家介绍如何爬取图片。
本书适合对Java感兴趣的零基础初学者阅读,包括对编程感兴趣的中小学生和想从事编程工作的人员。
1.本书作者关东升从事20多年Java编程工作,10多年的IT培训工作,漫画作者赵大羽是清华美院毕业的,绘画功底很深,也从事了多年的用户体验培训。
2.本书采用漫画加图解的方式,以轻松、愉快、欢乐的学习方式,讲解Java中众多的技术知识点。书中惟妙惟肖的漫画也为每一个知识点的学习注入了有趣的灵魂,非常适合初学编程的小白。
3.《漫画Java》在趣味的基础上,把相关概念梳理得条理清晰,逻辑严谨。
4.让读者在看漫画的过程中不知不觉地掌握Java语言,将复杂的技术问题通过漫画形式讲述给读者
关东升 软件架构师、高级培训讲师。 熟悉Java、Kotlin、Python、iOS、Android、游戏开发、数据库开发与设计、软件架构设计等多种IT技术。参与设计和开发北京市公交一卡通百亿级大型项目,开发国家农产品追溯系统、金融系统微博等移动客户端项目。近期为中国移动、中国联通、南方航空、中石油、工商银行、平安银行和天津港务局等企事业单位授课。
赵大羽,清华美院毕业的,绘画功底很深,也从事了多年的用户体验培训。
第 1 章 Java 咖啡真好喝
1.1 Java 语言与(爪哇)咖啡 / 2
1.2 Java 语言的历史 / 3
1.3 Java 语言的特点 / 3
1.4 Java 平台 / 5
1.4.1 Java SE / 5
1.4.2 Java EE / 5
1.4.3 Java ME / 5
1.5 Java 虚拟机 / 6
同步练习题 / 7
第 2 章 磨刀不误砍柴工 / 8
Java 环境搭建
2.1 下载和安装JDK / 9
2.1 配置JDK / 10
2.1 测试环境 / 14
同步练习题 / 15
第3 章 光说不练假把式
第 一个Java 应用程序 / 16
3.1 使用文本编辑工具编写HelloWorld 程序 / 17
3.1.1 用记事本编写Java 应用程序 / 17
3.1.2 编译和运行Java 应用程序 / 18
3.2 专业项目开发工具IntelliJ IDEA / 20
3.2.1 下载和安装IntelliJ IDEA / 21
3.2.2 配置IntelliJ IDEA / 22
3.2.3 使用IntelliJ IDEA 编写和运行
Java 应用程序 / 23
3.3 解释代码 / 27
同步练习题 / 30
第4 章 万丈高楼平地起
Java 语法基础 / 31
4.1 关键字和保留字 / 32
4.2 标识符 / 33
4.3 Java 分隔符 / 33
4.3.1 分号 / 34
4.3.2 大括号 / 34
4.3.3 空白 / 35
4.4 注释 / 35
4.4.1 单行注释 / 35
4.4.2 多行注释 / 36
4.4.3 文档注释 / 36
4.5 变量 / 37
4.6 常量 / 38
4.7 Java 源代码的组织方式 / 39
4.7.1 Java 源代码文件 / 39
4.7.2 包 / 40
同步练习题 / 42
第5 章 掐指一算
运算符 / 43
5.1 算术运算符 / 44
5.1.1 一元运算符 / 44
5.1.2 二元运算符 / 45
5.2 关系运算符 46
5.3 逻辑运算符 48
5.4 位运算符 / 50
5.5 赋值运算符 / 52
5.6 运算符的优先级 / 53
同步练习题 / 54
第6 章 一大波数据向你走来
Java 数据类型 / 56
6.1 基本数据类型 57
6.1.1 整数类型 / 58
6.1.2 浮点类型 / 59
6.1.3 字符类型 / 60
6.1.4 布尔类型 / 62
6.2 数值类型数据的转换 / 63
6.2.1 自动类型转换 / 63
6.2.2 强制类型转换 / 64
6.3 引用数据类型 / 66
同步练习题 / 68
第7 章 把数据集中管理起来
数组 / 69
7.1 声明数组 / 70
7.2 数组初始化 / 70
7.3 访问数组元素 / 72
7.4 多维数组 / 73
7.4.1 二维数组的声明 / 73
7.4.2 二维数组的初始化 / 73
同步练习题 / 76
第8 章 字符串,“好吃”吗?
字符串 / 77
8.1 字符串表示形式 / 78
8.2 不可变字符串 / 79
8.2.1 字符串拼接 / 81
8.2.2 字符串查找 / 82
8.2.3 字符串比较 / 85
8.2.4 字符串截取 / 87
8.3 可变字符串 / 88
8.3.1 字符串追加 / 89
8.3.2 字符串插入、删除和替换 / 90
同步练习题 / 92
第9 章 让程序学会思考
判断语句 / 93
9.1 if 语句 / 94
9.1.1 if 结构 / 94
9.1.2 if-else 结构 / 96
9.1.3 if-else-if 结构 / 97
9.2 switch 语句 / 98
同步练习题 / 101
第 10 章 别转圈了,我都懵了
循环语句 / 102
10.1 循环语句 / 103
10.1.1 while 语句 / 103
10.1.2 do-while 语句 / 104
10.2 for 语句 / 105
10.2.1 Java 语言风格的for 循环 / 105
10.2.2 C 语言风格的for 循环 / 106
10.3 跳转语句 / 108
10.3.1 break 语句 / 108
10.3.2 continue 语句 / 110
同步练习题 / 112
第 11 章 我喜欢“对象”
Java 面向对象编程基础 / 113
11.1 面向对象的概念 / 114
11.2 定义类 / 115
11.2.1 成员变量 / 116
11.2.2 成员方法 / 116
11.3 方法重载 / 118
11.4 对象 / 120
11.4.1 创建对象 / 120
11.4.2 空对象 / 121
11.4.3 对象销毁 / 121
11.5 构造方法 / 122
11.5.1 默认构造方法 / 123
11.5.2 构造方法重载 / 124
11.6 类的封装性 / 126
11.6.1 私有级别 / 126
11.6.2 默认级别 / 128
11.6.3 公有级别 / 129
11.6.4 保护级别 / 130
11.7 类变量和类方法 / 133
11.8 静态代码块 / 135
同步练习题 / 137
第 12 章 那些“烧脑”的面向对象
知识
Java 面向对象编程进阶 / 138
12.1 类的继承性 / 139
12.2 抽象类 / 143
12.3 接口 / 145
12.4 多态性 / 146
12.4.1 对象类型检查 / 147
12.4.2 对象类型转换 / 149
12.5 内部类 / 151
同步练习题 / 155
第 13 章 我不喜欢“抽象的”函数
Java 函数式编程 / 156
13.1 函数式接口 / 157
13.2 Lambda 表达式 / 160
同步练习题 / 163
第 14 章 一次郊游引发的意外
异常处理 / 164
14.1 理解Java 中的异常 / 165
14.1.1 分析异常栈跟踪信息 / 167
14.1.2 好大一棵“异常树” / 168
14.2 捕获异常 / 169
14.3 释放资源 / 171
14.4 声明方法抛出异常 / 174
同步练习题 / 177
第 15 章 上级来文件了
访问文件 / 179
15.1 文件管理 / 180
15.2 I/O 流 / 184
15.3 字节流 / 184
15.3.1 字节输入流类的继承树 / 184
15.3.2 字节输出流类的继承树 / 185
15.3.3 实践一下:文件复制工具 / 186
15.4 字符流 / 190
15.4.1 字符输入流类的继承树 / 190
15.4.2 字符输出流类的继承树 / 191
15.4.3 实践一下:使用字符流重构文件
复制工具 / 192
15.5 中介流 / 194
同步练习题 / 198
第 16 章 我要上网
Java 互联网编程 / 200
16.1 网络基础知识 / 201
16.1.1 HTTP/HTTPS 协议 / 201
16.1.2 什么是URL / 202
16.2 Java 访问互联网资源的相关类 / 202
16.2.1 URL 类 / 202
16.2.2 HttpURLConnection 类 / 204
16.2.3 实践一下:图片下载器 / 206
同步练习题 / 212
第 17 章 快到碗里来
集合 / 213
17.1 Java 集合继承树 / 214
17.2 List / 214
17.2.1 List 的常用方法 / 215
17.2.2 遍历List / 218
17.3 Set / 220
17.3.1 Set 的常用方法 / 220
17.3.2 遍历Set / 222
17.4 Map / 223
17.4.1 Map 的常用方法 / 223
17.4.2 遍历Map / 225
17.5 泛型 / 227
同步练习题 / 232
第 18 章 我讨厌那个黑乎乎的窗口
图形用户界面编程 / 233
18.1 Swing 技术概述 / 234
18.2 你的第 一个Java GUI 程序 / 235
18.3 添加更多组件 / 236
18.4 事件处理机制 / 238
18.4.1 遍历Set / 238
18.4.2 事件处理流程 / 239
18.4.3 实践一下:事件处理示例 / 241
18.4.4 使用匿名内部类实现事件
监听器 / 242
18.4.5 使用匿名内部类实现事件
监听器 / 243
18.5 布局管理 / 245
18.5.1 流式布局 / 245
18.5.2 边界布局 / 247
18.5.3 网格布局 / 248
18.5.4 使用可视化设计工具 / 250
18.6 常用的Swing 组件 / 253
18.6.1 文本输入组件 / 253
18.6.2 收音机按钮 / 255
18.6.3 复选框 / 259
18.6.4 列表 / 261
同步练习题 / 263
第 19 章 我要同时做几件事情
多线程编程 / 264
19.1 线程的相关概念 / 265
19.1.1 进程 / 265
19.1.2 线程 / 265
19.1.3 主线程 / 266
19.2 子线程 / 266
19.2.1 创建子线程 / 267
19.2.2 线程执行对象 / 267
19.2.3 使用匿名内部类实现线程执行
对象 / 270
19.2.4 使用Lambda 表达式实现线程
执行对象 / 270
19.2.5 简化!再简化! / 271
19.3 线程的状态 / 273
19.4 线程管理 / 274
19.4.1 死循环与“劳模”线程 / 274
19.4.2 “ 软着陆”停止线程 / 275
19.4.3 我等你,不见不散——等待
其他线程结束 / 277
19.5 线程的安全 / 279
19.5.1 “ 吃苹果”问题 / 280
19.5.2 线程同步 / 283
同步练习题 / 286
第 20 章 项目实战:
Java 网络爬虫技术
网络图片爬虫 / 287
20.1 爬虫如何修炼 / 288
20.2 青铜级爬虫:爬取数据 / 288
20.3 白银级爬虫:解析数据 / 291
20.3.1 使用正则表达式 / 292
20.3.2 下载和安装jsoup 库 / 296
20.3.3 jsoup 库的基本用法——
常用API / 297
20.4 黄金级爬虫:存储数据 / 300
20.5 铂金级爬虫:爬虫工作计划 / 305
20.6 钻石级爬虫:最终修炼完成 / 308
同步练习题答案