第1章 编程入门一点通 1
1.1 初识高级编程语言 1
1.2 跨越平台无障碍,Java语言显身手 3
1.3 编写面向对象的Java源程序 5
1.3.1 定义Monkey类 5
1.3.2 创建Monkey对象 6
1.3.3 程序入口main()方法 8
1.4 编译和运行Java程序 9
1.4.1 JDK简介 9
1.4.2 本范例的目录结构 11
1.4.3 编译Java源程序 11
1.4.4 运行Java程序 12
1.4.5 创建用于编译和运行Java程序的批处理文件 13
1.5 用JDeveloper软件来开发Java应用 13
1.6 小结 15
1.7 编程实战:八戒用餐怀感恩 16
第2章 基本语法了如指掌 19
2.1 Java源文件结构 19
2.2 关键字 20
2.3 标识符 21
2.4 Java语言大小写敏感 22
2.5 包声明语句 22
2.6 包引入语句 24
2.7 方法的声明 26
2.8 注释语句 27
2.9 编程规范 28
2.10 JavaDoc文档 28
2.11 直接用JDK来编译和运行本章范例 29
2.12 用JDeveloper来编译和运行本章范例 31
2.13 用Eclipse来编译和运行本章范例 33
2.14 Java类库模块化 36
2.15 使用JShell交互式编程界面 38
2.16 小结 40
2.17 编程实战:八戒吃瓜美滋滋 41
第3章 数据类型齐争艳 43
3.1 基本类型 44
3.1.1 boolean类型 44
3.1.2 byte、short、int和 long类型 45
3.1.3 char类型与字符编码 46
3.1.4 float和double类型 47
3.2 引用类型 47
3.3 基本类型与引用类型的区别 48
3.4 直接数 50
3.4.1 直接数的类型 50
3.4.2 直接数的赋值 51
3.5 小结 51
3.6 编程实战:金箍棒的电子档案 52
第4章 千姿百态话变量 55
4.1 变量的作用域 55
4.1.1 实例变量和静态变量 57
4.1.2 用静态变量统计实例的个数 59
4.1.3 成员变量和局部变量同名 60
4.2 对象的默认引用:this 60
4.3 参数传递 61
4.4 变量的初始化及默认值 63
4.4.1 成员变量的初始化 64
4.4.2 局部变量的初始化 65
4.4.3 用new关键字创建对象 65
4.5 小结 67
4.6 编程实战:人参果树妙回春 69
第5章 操作符号显身手 71
5.1 操作符的优先级 72
5.2 整型操作符 73
5.2.1 一元整型操作符 73
5.2.2 二元整型操作符 73
5.3 浮点型操作符 74
5.4 比较操作符和逻辑操作符 75
5.4.1 比较操作符 75
5.4.2 逻辑操作符 76
5.5 特殊操作符“?:” 78
5.6 变量的赋值 78
5.7 基本数据类型转换 79
5.7.1 自动类型转换 79
5.7.2 强制类型转换 81
5.8 小结 81
5.9 编程实战:判断年份是否为闰年 82
5.10 编程实战:数字加密 83
第6章 运筹帷幄控流程 85
6.1 分支语句 86
6.1.1 if...else语句 86
6.1.2 switch语句 87
6.2 循环语句 91
6.2.1 while语句 93
6.2.2 do...while语句 94
6.2.3 for语句 95
6.3 流程跳转语句 96
6.4 小结 98
6.5 编程实战:实现常用数学运算 98
6.6 编程实战:打印金字塔 99
6.7 编程实战:考试分数和等级转换 100
6.8 编程实战:数兔子 101
6.9 编程实战:寻找水仙花数 103
第7章 代码重用靠继承 105
7.1 继承的基本语法 107
7.2 方法重载(Overload) 108
7.3 方法覆盖(Override) 109
7.4 方法覆盖与方法重载的异同 111
7.5 super关键字 112
7.6 多态 113
7.7 小结 115
7.8 编程实战一:运用方法的重载和覆盖 115
7.9 编程实战二:演绎孙悟空与二郎神斗法 116
第8章 引用类型操作符 121
8.1 字符串连接操作符“+” 121
8.2 操作符“==”与对象的equals()方法 122
8.2.1 操作符“=” 122
8.2.2 对象的equals()方法 123
8.3 操作符“!=” 125
8.4 引用变量的赋值和类型转换 126
8.5 instanceof操作符 127
8.6 小结 128
8.7 编程实战:辨别真假孙悟空 129
第9章 公私分明设权限 131
9.1 封装类的部分属性和方法 132
9.2 4种访问控制级别 133
9.3 小结 136
9.4 编程实战:模拟自动洗衣机 137
第10章 abstract:虚拟抽象画蓝图 143
10.1 abstract修饰符的修饰内容 143
10.2 abstract修饰符的语法规则 144
10.3 抽象类不能被实例化 145
10.4 小结 146
10.5 编程实战:金、银角大王的魔法宝物 146
第11章 final:一锤定音恒不变 149
11.1 final类 150
11.2 final方法 150
11.3 final变量 151
11.4 小结 153
11.5 编程实战:无法伪造篡改的生死簿 154
第12章 static:静态家当共分享 157
12.1 static变量 158
12.2 static方法 158
12.2.1 静态方法可访问的内容 159
12.2.2 实例方法可访问的内容 160
12.2.3 静态方法必须被实现 161
12.2.4 作为程序入口的main()方法是静态方法 161
12.3 static代码块 162
12.4 小结 163
12.5 编程实战:灵活配置绘制图形 163
第13章 对外开放靠接口 167
13.1 接口的概念和语法规则 169
13.2 比较抽象类与接口 171
13.3 小结 173
13.4 编程实战:紧箍圈降伏诸顽劣 174
第14章 出生入死话对象 177
14.1 对象的构造方法 178
14.1.1 重载构造方法 179
14.1.2 默认构造方法 180
14.1.3 子类调用父类的构造方法 181
14.2 垃圾回收 184
14.2.1 垃圾回收的时机 185
14.2.2 对象的finalize()方法 186
14.3 小结 187
14.4 编程实战:玩转垃圾回收 188
14.5 编程实战:独一无二玉净瓶 190
第15章 类型封装内部类 191
15.1 内部类的种类 193
15.2 成员内部类 193
15.2.1 实例内部类 194
15.2.2 静态内部类 197
15.3 局部内部类 198
15.4 匿名类 199
15.5 用Lambda表达式代替内部类 201
15.6 小结 202
15.7 编程实战:内部类回调外部类 203
第16章 降伏异常有策略 205
16.1 Java异常处理机制概述 206
16.2 运用Java异常处理机制 209
16.2.1 try...catch语句:捕获异常 209
16.2.2 finally语句:任何情况下必须执行的代码 210
16.2.3 throws子句:声明可能会出现的异常 211
16.2.4 throw语句:抛出异常 212
16.2.5 异常处理语句的语法规则 212
16.2.6 异常流程的运行过程 215
16.3 Java异常类 216
16.3.1 运行时异常 219
16.3.2 受检查异常(Checked Exception) 219
16.3.3 区分运行时异常和受检查异常 219
16.4 用户定义异常 221
16.5 小结 222
16.6 编程实战:囧途开车遇异常 223
第17章 数组元素排排坐 227
17.1 数组简介 229
17.2 数组变量的声明 229
17.3 创建数组对象 229
17.4 访问数组的元素和长度 231
17.5 数组的初始化 232
17.6 数组排序 233
17.7 多维数组 234
17.8 用符号“...”声明数目可变参数 235
17.9 小结 236
17.10 编程实战:多位数字加密 237
17.11 编程实战:用数组实现堆栈 238
第18章 集合元素大操练 241
18.1 Java集合的类框架 242
18.2 集合的基本用法 242
18.2.1 包装类的自动装箱和拆箱 243
18.2.2 Set(集)和List(列表)的各种具体实现类的特点 243
18.2.3 集合的静态of()方法 245
18.3 List(队列) 247
18.4 Map(映射) 247
18.5 用Lambda表达式遍历集合 249
18.6 小结 250
18.7 编程实战:计算数学表达式 250
18.8 编程实战:计算带括号的数学表达式 254
18.9 编程实战:用集合工具对数字排序 257
18.10 编程实战:按月份先后顺序数兔子 258
18.11 编程实战:用映射来存放学生信息 259
18.12 编程实战:圆桌报数游戏 261
第19章 数据出入靠I/O 263
19.1 输入流和输出流概述 264
19.2 输入流 265
19.3 FilterInputStream(过滤输入流) 266
19.3.1 BufferedInputStream类 267
19.3.2 DataInputStream类 267
19.4 输出流 269
19.5 FilterOutputStream(过滤输出流) 269
19.5.1 DataOutputStream 269
19.5.2 BufferedOutputStream 270
19.5.3 PrintStream类 270
19.6 Reader/Writer概述 271
19.7 Reader类 273
19.7.1 InputStreamReader类 273
19.7.2 FileReader类 273
19.7.3 BufferedReader类 274
19.8 Writer类 274
19.8.1 OutputStreamWriter类 275
19.8.2 FileWriter类 275
19.8.3 BufferedWriter类 275
19.8.4 PrintWriter类 275
19.9 读写文本文件的范例 276
19.10 随机访问文件类:RandomAccessFile 278
19.11 File类 279
19.12 用java.nio.file类库来操纵文件系统 281
19.13 小结 284
19.14 编程实战:替换文本文件中的字符串 285
19.15 编程实战:批量修改文件名 287
第20章 并发运行多线程 289
20.1 Java线程的运行机制 290
20.2 线程的创建和启动 291
20.2.1 扩展java.lang.Thread类 291
20.2.2 实现java.lang.Runnable接口 293
20.3 线程的状态转换 295
20.3.1 新建状态(New) 295
20.3.2 就绪状态(Runnable) 295
20.3.3 运行状态(Running) 295
20.3.4 阻塞状态(Blocked) 296
20.3.5 等待状态(Waiting) 296
20.3.6 死亡状态(Terminated) 296
20.3.7 线程状态转换举例 296
20.4 线程调度 297
20.4.1 调整各个线程的优先级 298
20.4.2 线程睡眠:Thread.sleep()方法 299
20.4.3 线程让步:Thead.yield()方法 300
20.4.4 等待其他线程结束:join() 301
20.5 获得当前线程对象的引用 302
20.6 小结 303
20.7 编程实战:孙悟空偷吃蟠桃 304
第21章 同步通信多线程 307
21.1 线程的同步 309
21.1.1 同步代码块 312
21.1.2 线程同步的特征 314
21.2 线程的通信 316
21.3 小结 320
21.4 编程实战:悟空保唐僧打群妖 321
21.5 编程实战:运动员赛跑 324
21.6 编程实战:秒针、分针和时针的通信 326
第22章 图形界面俏容颜 329
22.1 图形用户界面的构建机制 329
22.2 容器类组件 331
22.3 布局管理器 333
22.3.1 FlowLayout流式布局管理器 335
22.3.2 BorderLayout边界布局管理器 336
22.3.3 GridLayout网格布局管理器 338
22.3.4 CardLayout卡片布局管理器 340
22.4 事件处理 342
22.5 AWT绘图 345
22.6 创建动画 348
22.7 菜单 350
22.8 小结 352
22.9 编程实战:创建数学计算器 354
22.10 编程实战:创建BMI指数计算器 355
第23章 轻松访问数据库 361
23.1 安装和配置MySQL数据库 362
23.2 JDBC API简介 364
23.3 JDBC API的基本用法 367
23.4 获得新插入记录的主键值 370
23.5 封装连接数据库的细节 371
23.6 处理SQLException 376
23.7 设置批量抓取属性 377
23.8 可滚动及可更新的结果集 378
23.9 小结 385
23.10 编程实战:创建客户管理器 385