目录
第1章 Java基本概念
1-1 认识Java2
1-2 Java的起源2
1-3 Java之父2
1-4 Java发展史3
1-5 Java的三大平台3
1-5-1 Java SE3
1-5-2 Java EE3
1-5-3 Java ME3
1-6 认识Java SE平台的JDK/JRE/JVM4
1-6-1 JDK4
1-6-2 JRE5
1-6-3 JVM5
1-7 Java跨平台原理5
1-7-1 一般程序的编译与执行5
1-7-2 Java程序的编译与执行5
1-8 Java语言的特点6
习题7
第2章 Java程序从零开始
2-1 我的个Java程序9
2-1-1 程序设计流程9
2-1-2 编辑Java程序代码9
2-1-3 编译Java程序9
2-1-4 执行Java程序9
2-1-5 认识classpath10
2-2 解析Java的程序结构10
2-3 程序注释11
程度实操题13
习题14
第3章 Java语言基础
3-1 认识变量16
3-1-1 变量的声明16
3-1-2 设置有意义的变量名称17
3-1-3 了解注释的意义17
3-1-4 变量的命名规则18
3-2 基本数据类型19
3-2-1 整数数据类型19
3-2-2 浮点数数据类型22
3-2-3 字符数据类型23
3-2-4 布尔值25
3-3 字符串数据类型25
3-4 常量的概念26
3-5 精准控制格式化的输出27
程序实操题28
习题28
第4章 程序基本运算
4-1 程序设计的专有名词31
4-1-1 表达式31
4-1-2 运算符与操作数31
4-1-3 操作数也可以是一个表达式31
4-1-4 指定运算符31
4-1-5 二元运算符31
4-1-6 单元运算符32
4-1-7 三元运算符32
4-2 指定运算符的特殊用法说明32
4-3 基本数学运算33
4-3-1 四则运算33
4-3-2 求余数%33
4-3-3 递增与递减运算符33
4-3-4 正负号34
4-3-5 无限大34
4-3-6 发生异常35
4-3-7 非数字35
4-3-8 Java语言控制运算的优先级35
4-4 复合指定运算符35
4-5 布尔值、反向运算符、比较运算符与
逻辑运算符36
4-5-1 布尔值36
4-5-2 反向运算符36
4-5-3 比较运算符37
4-5-4 逻辑运算符37
4-5-5 再谈三元运算符38
4-6 位运算39
4-6-1 ~ 运算符40
4-6-2 位逻辑运算符40
4-6-3 位移位运算符41
4-6-4 位运算的复合指定运算符42
4-7 Java运算符优先级43
4-8 数据类型的转换44
4-8-1 指定运算符自动数据
类型的转换44
4-8-2 自动数据类型的转换46
4-8-3 强制数据类型的转换47
4-9 数据的转换与输入48
4-9-1 将整数转成字符串方式输出48
4-9-2 屏幕输入48
4-10 浅谈import与java.lang包50
4-10-1 再谈import50
4-10-2 java.lang包51
4-11 程序语句的结合与分行52
4-11-1 语句的结合52
4-11-2 语句的分行52
程序实操题52
习题53
第5章 程序流程控制
5-1 if语句56
5-1-1 基本if语句56
5-1-2 if … else语句58
5-1-3 再看三元运算符60
5-1-4 if … else if …else语句60
5-1-5 嵌套if语句63
5-2 switch语句64
程序实操题68
习题68
第6章 循环控制
6-1 for循环72
6-2 嵌套for循环73
6-3 while循环74
6-4 嵌套while循环75
6-5 do … while循环75
6-6 无限循环76
6-7 循环与break语句77
6-8 循环与continue语句78
6-9 循环标签与break/continue79
6-10 将循环应用于Scanner
类的输入检查80
6-11 循环相关的程序应用81
程序实操题82
习题83
第7章 数组
7-1 认识数组86
7-2 数组的声明与应用86
7-2-1 数组的声明86
7-2-2 数组的空间配置87
7-2-3 同时执行数组的声明与配置88
7-2-4 数组的属性length88
7-2-5 数组初值的设置88
7-2-6 特殊数组声明与初值设置89
7-2-7 常见的数组使用错误——索
引值超出数组范围90
7-2-8 foreach循环遍历数组90
7-2-9 与数组有关的程序实例90
7-3 Java参照数据类型92
7-3-1 原始数据类型93
7-3-2 参照数据类型93
7-4 垃圾回收94
7-4-1 参照计数95
7-4-2 更改参照95
7-4-3 参照计数减少的其他可能97
7-4-4 垃圾回收97
7-5 多维数组的原理97
7-5-1 多维数组元素的声明97
7-5-2 配置多维数组的空间98
7-5-3 声明与设置二维数组
元素的初值98
7-5-4 分层配置二维数组99
7-5-5 不同长度的二维数组99
7-6 Java命令行参数100
7-6-1 Java程序执行的参数数量100
7-6-2 命令行参数内容101
7-7 二维数组的程序应用101
程序实操题102
习题103
第8章 类与对象
8-1 认识对象与类106
8-2 定义类与对象107
8-2-1 定义类107
8-2-2 声明与建立类对象108
8-3 类的基本实例108
8-3-1 建立类的属性108
8-3-2 存取类的成员变量108
8-3-3 调用类的方法109
8-4 类含多个对象109
8-4-1 类含多个对象的应用109
8-4-2 建立类的对象数组110
8-5 类的参照数据类型111
8-5-1 类的参照内存图示111
8-5-2 类对象属性的初值111
8-5-3 细读类参照的内存图示112
8-6 再谈方法113
8-6-1 基本参数的传递113
8-6-2 认识形参与实参114
8-6-3 参数传递的方法114
8-6-4 方法的返回值116
8-6-5 可变参数的设计117
8-7 变量的有效范围118
8-7-1 for循环的索引变量118
8-7-2 foreach循环118
8-7-3 局部变量119
8-7-4 类内成员变量与方法变量有
相同的名称120
8-8 匿名数组121
8-9 递归式方法设计122
8-10 河内塔问题122
程序实操题124
习题125
第9章 对象构造与封装
9-1 构造方法128
9-1-1 默认的构造方法128
9-1-2 自建构造方法129
9-1-3 重载130
9-1-4 this关键词135
9-2 类的访问权限——封装137
9-2-1 类成员的访问控制138
9-2-2 设计具有封装效果的程序140
9-3 static关键词141
9-3-1 static成员变量141
9-3-2 使用类名称直接存取143
9-3-3 静态成员变量的初始区块144
9-3-4 将static成员变量应用于人数
总计144
9-3-5 static方法145
9-3-6 认识main()145
9-3-7 final关键词与static成员变量146
程序实操题146
习题147
第10章 内建Math和Random类
10-1 数学常量149
10-2 随机数的应用150
10-3 求较大值max()/较小值min()151
10-4 求值abs()151
10-5 四舍五入round()152
10-6 返回接近的整数值rint()152
10-7 求近似值ceil()/floor()152
10-8 一般的数学运算方法153
10-9 三角函数的应用154
10-10 Random类155
程序实操题155
习题156
第11章 日期与时间类
11-1 Date类158
11-2 Java 8后的新日期与时间类159
11-2-1 LocalDate类159
11-2-2 LocalTime类160
11-2-3 LocalDateTime类161
11-2-4 时间戳Instant类162
11-2-5 Duration类162
11-2-6 Period类163
程序实操题163
习题163
第12章 字符与字符串类
12-1 字符Character类166
12-2 字符串的建立167
12-2-1 基本字符串类型声明168
12-2-2 使用构造方法建立字符串
对象168
12-2-3 再看String类的参照169
12-2-4 String对象内存内容无法
更改170
12-3 String类的方法171
12-3-1 字符串长度相关的方法171
12-3-2 大小写转换171
12-3-3 字符的查找172
12-3-4 子字符串的查找172
12-3-5 截取字符串的子字符串或
字符173
12-3-6 字符串的替换174
12-3-7 字符串的连接175
12-3-8 字符串的比较175
12-3-9 字符串的转换177
12-3-10 字符串的split()方法177
12-4 StringBuffer类178
12-4-1 建立StringBuffer类对象178
12-4-2 处理字符串缓冲区长度和
容量179
12-4-3 字符串缓冲区内容修改的
方法179
12-4-4 设置与替换180
12-4-5 复制子字符串180
12-5 StringBuilder类181
12-6 字符串数组的应用181
程序实操题182
习题182
第13章 正则表达式
13-1 使用Java硬功夫查找文字185
13-2 使用String类处理正则表达式187
13-2-1 正则表达式基础187
13-2-2 使用大括号{ }处理重复
出现的字符串188
13-2-3 处理市区电话字符串方式188
13-2-4 用括号分组189
13-2-5 用小括号处理区域号码189
13-2-6 使用管道|190
13-2-7 使用 问号做查找190
13-2-8 使用*号做查找191
13-2-9 使用 号做查找191
13-2-10 查找时使用大括号
设置比对次数区间191
13-2-11 正则表达式量次的表192
13-3 正则表达式的特殊字符192
13-3-1 特殊字符表192
13-3-2 单一字符使用通配符“.”193
13-3-3 字符分类193
13-3-4 字符分类的^字符194
13-3-5 所有字符使用通配符“.*”194
13-4 matches()方法的万用程序与
功能扩充194
13-5 再谈String类有关的正则
表达方法195
13-5-1 replaceFirst()方法195
13-5-2 replaceAll()方法196
13-6 正则表达式的包196
13-6-1 基本字符串的比对197
13-6-2 字符串的查找198
13-6-3 字符串的替换198
程序实操题199
习题199
第14章 继承与多态
14-1 继承202
14-1-1 从三个简单的Java程序谈起202
14-1-2 继承的语法204
14-1-3 观察父类构造方法的启动205
14-1-4 父类属性是public子类初始化
父类属性205
14-1-5 父类属性是private调用父类
构造方法206
14-1-6 存取修饰符protected207
14-1-7 分层继承208
14-1-8 多层次继承210
14-1-9 继承类总结与陷阱211
14-1-10 常见的继承程序设计211
14-1-11 父类与子类有相同的成员
变量名称212
14-2 IS-A和HAS-A关系213
14-2-1 IS-A关系与instanceof213
14-2-2 HAS-A关系——聚合214
14-2-3 HAS-A关系——组合216
14-3 Java程序代码太长的处理217
14-4 重写219
14-4-1 基本定义219
14-4-2 super关键词应用于Override220
14-4-3 重写方法时访问
权限不可比父类严220
14-4-4 不能重写static方法221
14-4-5 不能重写final方法221
14-4-6 @Overload222
14-5 重载父类的方法222
14-6 多态223
14-6-1 编译时多态223
14-6-2 执行时多态223
14-7 静态绑定与动态绑定227
14-8 嵌套类别228
14-8-1 内部类228
14-8-2 方法内部类229
14-8-3 匿名内部类230
14-8-4 匿名类当作参数传送231
程序实操题231
习题232
第15章 Object类
15-1 认识扩充Object类235
15-2 Object类的方法235
15-3 认识哈希码与hashCode()235
15-3-1 认识哈希码235
15-3-2 hashCode()236
15-4 equals()方法237
15-5 toString()方法238
15-6 getClass()方法239
程序实操题239
习题240
第16章 抽象类
16-1 使用抽象类的场合242
16-2 抽象类基本概念243
16-3 抽象方法的基本概念244
16-4 抽象类与抽象方法概念整理245
16-5 抽象类的构造方法247
16-6 使用Upcasting声明抽象类的对象247
16-7 抽象类与方法的程序应用247
程序实操题248
习题248
第17章 接口
17-1 认识接口251
17-2 接口的成员变量252
17-3 Java 8新增加接口内容253
17-3-1 Default方法254
17-3-2 static方法255
17-4 Java 9新增加接口内容256
17-5 基本接口的继承258
17-6 接口多重继承259
17-7 实现时发生成员变量有相同名称261
17-8 类重写Default方法262
17-9 一个类同时继承类与实现接口263
17-10 类分别继承父类与实现接口发生
方法名称冲突264
17-11 多层次继承中发生Default
方法名称相同265
17-12 名称冲突的钻石问题266
程序实操题267
习题268
第18章 Java包装类
18-1 基本概念271
18-2 认识包装类271
18-3 认识自动封箱与拆箱272
18-4 建立包装类对象272
18-4-1 使用构造方法建立包装类
对象272
18-4-2 自动封箱的实例273
18-4-3 拆箱的实例273
18-5 使用valueOf()建立对象274
18-6 取得Number类对象的值275
18-7 包装类的常量275
18-8 将基本数据转成字符串toString()276
18-9 将字符串转成基本数据类型
parseXXX()277
18-10 比较方法277
18-10-1 比较是否相同equals()277
18-10-2 比较大小compareTo()278
程序实操题278
习题279
第19章 设计包
19-1 复习包名称的导入281
19-1-1 基本概念281
19-1-2 不同包名称冲突282
19-1-3 包层次声明的注意事项283
19-1-4 静态static成员导入声明284
19-2 设计java包基础知识285
19-3 java包的优点285
19-4 建立、编译与执行包286
19-4-1 建立包基础知识286
19-4-2 包与文件夹287
19-4-3 编译包287
19-4-4 执行包288
19-4-5 使用包但是没有导入包288
19-4-6 建立含多个类文件的包289
19-5 包与应用程序分属不同文件夹291
19-6 建立子包293
19-7 包的访问控制294
19-8 将抽象类应用于包295
19-9 将编译文件送至不同文件夹的方法296
程序实操题298
习题298
第20章 程序异常的处理
20-1 认识程序错误的类别301
20-2 认识简单的异常实例301
20-2-1 除数为0的异常302
20-2-2 使用者输入错误的异常302
20-2-3 数组运算发生索引值超出
范围303
20-2-4 其他常见的异常303
20-3 处理异常方法304
20-3-1 程序设计师处理异常方式304
20-3-2 再谈Java处理异常方式304
20-3-3 异常类Throwable305
20-4 try-catch306
20-4-1 简单的try-catch程序实例307
20-4-2 简单多个catch区块的应用309
20-5 捕捉上层的异常310
20-6 try/catch/finally312
20-7 Throwable类313
20-8 自行抛出异常throw314
20-9 方法抛出异常throws315
20-10 使用者自定义异常类318
程序实操题320
习题320
第21章 多线程
21-1 认识程序、进程、线程323
21-2 认识多任务作业324
21-2-1 Process-based
Mutitasking的特点324
21-2-2 Thread-based
Mutitasking的特点325
21-3 Java的多线程325
21-3-1 认识线程325
21-3-2 多线程的优点325
21-4 线程的生命周期325
21-5 建立线程326
21-5-1 Thread类326
21-5-2 多线程的赛马程序设计328
21-5-3 Runnable接口329
21-6 再看Java线程的工作原理330
21-7 让线程进入睡眠330
21-8 线程的join()方法331
21-9 线程的优先级值331
21-10 守护线程333
21-10-1 关于守护线程的重点333
21-10-2 JVM终止守护线程原因333
21-10-3 Thread类内有关守护
线程的方法333
21-11 Java的同步334
21-11-1 同步的目的334
21-11-2 同步的形式334
21-11-3 线程同步334
21-11-4 了解未同步所产生的问题334
21-11-5 同步方法335
21-12 匿名类336
21-13 同步区块337
21-14 同步静态方法337
21-15 认识死锁338
21-16 线程内部通信339
21-16-1 wait()方法339
21-16-2 notify()方法340
21-16-3 notifyAll()方法340
程序实操题341
习题342
第22章 输入与输出
22-1 认识流344
22-2 InputStream和OutputStream类344
22-3 适用byte数据文件输入与
输出的类346
22-3-1 FileOutputStream类346
22-3-2 FileInputStream类347
22-3-3 图片文件复制的实例348
22-4 使用缓冲区处理byte数据文件
输入与输出349
22-4-1 BufferedOutputStream类349
22-4-2 BufferedInputStream类350
22-5 Writer和Reader类351
22-6 字符读取与写入FileReader类与
FileWriter类352
22-6-1 FileWriter类352
22-6-2 FileReader类353
22-7 字符数据输入与输出BufferedReader/
BufferedWriter类354
22-7-1 BufferedWriter类354
22-7-2 BufferedReader类354
22-8 System类355
22-9 PrintStream类356
22-10 Console类357
22-11 文件与文件夹的管理File类358
程序实操题361
习题362
第23章 压缩与解压缩文件
23-1 基本概念与认识java.util.zip包364
23-2 压缩文件364
23-2-1 压缩单一文件365
23-2-2 压缩多个文件366
23-2-3 压缩整个文件夹366
23-3 解压缩文件368
程序实操题369
习题369
第24章 Java Collection
24-1 认识泛型372
24-1-1 泛型类372
24-1-2 泛型方法373
24-1-3 泛型的通配符373
24-2 认识集合对象374
24-2-1 Iterable接口375
24-2-2 Collection接口375
24-3 List接口376
24-3-1 ArrayList类376
24-3-2 LinkedList类380
24-3-3 数据结构堆栈382
24-3-4 数据结构队列383
24-3-5 ListIterator接口384
24-4 Set接口385
24-4-1 HashSet类385
24-4-2 LinkedHashSet类386
24-4-3 TreeSet类387
24-5 Map接口388
24-5-1 HashMap类388
24-5-2 LinkedHashMap类390
24-5-3 TreeMap类390
24-6 Java Collections Framework
算法391
程序实操题392
习题393
第25章 现代Java运算
25-1 增强版的匿名内部类396
25-2 Lambda表达式396
25-2-1 Lambda表达式有传递参数397
25-2-2 Lambda表达式没有return398
25-3 forEach()398
25-4 方法参照398
25-4-1 参考静态方法399
25-4-2 参考实例方法399
25-4-3 参考构造方法400
25-5 Java的工厂方法400
25-5-1 List接口400
25-5-2 Set接口401
25-5-3 Map接口401
25-5-4 Map接口的ofEntries()方法402
25-6 Java新的版本字符串格式402
程序实操题403
习题403
第26章 窗口程序设计使用AWT
26-1 AWT类结构图405
26-2 Frame类406
26-3 窗口组件颜色的设置——Color类408
26-4 标签Label 类409
26-5 字型设置——Font类411
26-6 Button类412
26-7 建立文字输入对象412
26-7-1 TextField类413
26-7-2 TextArea类414
26-8 Checkbox类415
26-9 CheckboxGroup类416
26-10 版面配置管理员417
26-10-1 边界版面配置类417
26-10-2 方格版面配置类419
26-10-3 流动式版面配置类419
26-10-4 卡片式版面配置类421
程序实操题422
习题423
第27章 事件处理
27-1 委派事件模式426
27-2 简单按钮事件处理426
27-3 认识事件处理类428
27-4 ActionEvent事件类431
27-5 ItemEvent类433
27-6 TextEvent类434
27-7 KeyEvent类435
27-8 KeyAdapter类437
27-9 MouseEvent类438
27-9-1 MouseListener接口438
27-9-2 MouseAdapter类439
27-9-3 MouseMotionListener接口440
27-9-4 MouseMotionAdapter类441
27-10 WindowEvent类441
27-11 WindowAdapter类443
程序实操题443
习题444
第28章 再谈AWT对象
28-1 列表(List)类446
28-1-1 建立列表446
28-1-2 列表的事件处理448
28-2 下拉式列表(Choice)类448
28-2-1 建立下拉式列表449
28-2-2 下拉式列表的事件处理450
28-3 菜单设计450
28-3-1 建立菜单451
28-3-2 菜单的事件处理453
28-4 滚动条(Scrollbar)类454
28-5 对话框(Dialog)类456
28-6 文件对话框(FileDialog)类458
程序实操题460
习题460
第29章 使用Swing进行窗口程序
设计
29-1 Swing层次结构图462
29-2 JFrame类462
29-2-1 建立简单的JFrame窗口462
29-2-2 JFrame窗格的基本概念463
29-3 JButton类464
29-4 JLabel类466
29-5 JCheckBox类469
29-6 JRadioButton类471
29-7 JOptionPane类473
29-8 JList类474
29-9 JColorChooser类477
29-10 JTextField类479
29-11 JTextArea类480
29-12 JPasswordField类482
29-13 JTabbedPane类483
29-14 本章结尾483
程序实操题483
习题484
第30章 绘图与动画
30-1 认识坐标系统486
30-2 AWT绘图487
30-2-1 取得绘图区与绘图实例487
30-2-2 省略触发机制绘图489
30-2-3 认识窗口的绘图区空间489
30-3 Swing绘图490
30-4 颜色与字型491
30-5 Graphics类492
30-6 Graphics2D类496
30-6-1 Graphics2D的新概念497
30-6-2 绘图类498
30-6-3 Graphics2D着色501
30-7 拖曳鼠标绘制线条501
30-8 动画设计502
程序实操题504
习题504
第31章 网络程序设计
31-1 认识Internet网址507
31-2 Java InetAddress类507
31-3 URL类508
31-4 URLConnection类510
31-5 HttpURLConnection类513
31-6 C/S架构程序设计基本概念513
31-6-1 Java Socket Client端的设计514
31-6-2 Java Socket Server端的设计516
31-7 UDP通信518
程序实操题520
附录A Java下载、安装与环境设置
A-1 下载Java522
A-2 安装Java523
A-3 Java环境设置524
A-3-1 设置Path环境变量524
A-3-2 验证Path环境变量526
A-3-3 设置classpath环境变量526
A-4 下载Java 10文件527