第1章 认识Java 2
1.1 Java简介 2
1.1.1 什么是Java语言 2
1.1.2 Java语言的特点 3
1.1.3 学习Java的最佳途径 4
1.2 高手带你做——搭建Java开发环境 5
1.3 高手带你做——配置环境变量 7
1.4 高手带你做——输出“你好Java” 9
1.4.1 编写Java源程序 9
1.4.2 编译和运行 10
1.4.3 编译常见错误解决方法 11
1.4.4 Java程序运行流程 11
1.5 Java程序的基本要素 12
1.5.1 标识符 13
1.5.2 关键字 13
1.5.3 注释 14
1.5.4 修饰符 15
1.5.5 语句和块 15
1.5.6 类 15
1.5.7 方法 15
1.5.8 main()方法 15
1.6 Java推荐编程规范 16
1.7 高手带你做——安装Eclipse 16
1.8 高手带你做——创建第一个Java项目 19
1.9 高手带你做——修改Eclipse编辑器字体大小 23
1.10 高手带你做——Eclipse调试代码 24
1.11 成长任务 26
第2章 Java程序设计基础 28
2.1 常量 28
2.1.1 常量值 28
2.1.2 定义常量 29
2.2 变量 29
2.2.1 声明变量 30
2.2.2 变量赋值 30
2.2.3 变量的作用域 30
2.3 数据类型 32
2.3.1 数据类型的分类 33
2.3.2 整数类型 33
2.3.3 浮点类型 34
2.3.4 布尔类型 36
2.3.5 字符类型 36
2.4 基本运算符 37
2.4.1 算术运算符 37
2.4.2 赋值运算符 39
2.4.3 逻辑运算符 41
2.4.4 关系运算符 41
2.4.5 自增和自减运算符 43
2.5 位运算符 45
2.5.1 位逻辑运算符 45
2.5.2 位移运算符 47
2.5.3 复合位赋值运算符 48
2.6 高手带你做——认识条件运算符 48
2.7 运算符优先级 49
2.8 类型转换 50
2.8.1 隐式转换 51
2.8.2 显式转换 51
2.9 成长任务 52
第3章 流程控制语句 54
3.1 了解算法 54
3.1.1 算法的定义 54
3.1.2 高手带你做——使用算法求1~4的和 54
3.1.3 算法描述方式 55
3.2 顺序结构 58
3.2.1 语句编写方式 58
3.2.2 空语句 59
3.2.3 表达式语句 59
3.2.4 复合语句 59
3.3 if条件语句 60
3.3.1 if语句语法 60
3.3.2 双条件if语句 62
3.3.3 多条件if语句 63
3.3.4 高手带你做——嵌套if的使用 65
3.4 switch条件语句 67
3.4.1 switch语句格式 67
3.4.2 if语句和switch语句的区别 69
3.4.3 高手带你做——根据出生日期判断星座 70
3.5 循环语句 71
3.5.1 while语句 72
3.5.2 do…while语句 72
3.5.3 for语句 74
3.5.4 高手带你做——九九乘法口诀表 77
3.5.5 foreach语句 78
3.6 跳转语句 79
3.6.1 return语句 79
3.6.2 break语句 80
3.6.3 continue语句 84
3.7 高手带你做——判断闰年和输出某月的天数 86
3.8 高手带你做——输出杨辉三角形 87
3.9 成长任务 89
第4章 字符串处理 92
4.1 定义字符串 92
4.1.1 直接定义字符串 92
4.1.2 使用String类定义 92
4.2 连接字符串 93
4.2.1 使用连接运算符 93
4.2.2 使用concat()方法 94
4.2.3 高手带你做——连接其他类型数据 95
4.3 基本处理 96
4.3.1 获取字符串长度 96
4.3.2 转换大小写 97
4.3.3 去除空格 98
4.3.4 提取子字符串 98
4.3.5 分割字符串 100
4.3.6 高手带你做——截取新闻标题 100
4.4 替换字符串 102
4.4.1 replace()方法 102
4.4.2 replaceFirst()方法 102
4.4.3 replaceAll()方法 103
4.4.4 高手带你做——批量替换字符串 103
4.5 比较字符串 104
4.5.1 equals()方法 104
4.5.2 equalsIgnoreCase()方法 105
4.5.3 compareTo()方法 106
4.6 查找字符串 107
4.6.1 根据字符查找 107
4.6.2 根据索引查找 108
4.6.3 高手带你做——校验文件名和邮箱地址 109
4.7 高手带你做——加密和解密 110
4.8 StringBuffer类 111
4.8.1 创建StringBuffer类 112
4.8.2 追加字符串 112
4.8.3 替换字符 114
4.8.4 反转字符串 114
4.8.5 删除字符串 114
4.8.6 高手带你做——替换特殊符号 115
4.9 正则表达式 116
4.9.1 元字符 116
4.9.2 限定符 117
4.9.3 高手带你做——使用正则表达式验证电话号码 117
4.9.4 高手带你做——验证IP地址是否合法 118
4.10 成长任务 120
第5章 数字和日期处理 122
5.1 数学处理类 122
5.1.1 静态常量 122
5.1.2 求最大值、最小值和绝对值 122
5.1.3 求整运算 123
5.1.4 三角函数运算 124
5.1.5 指数运算 125
5.2 高手带你做——生成随机数 125
5.3 高手带你做——数字格式化 128
5.4 大数字运算 129
5.4.1 BigInteger类 129
5.4.2 BigDecimal类 131
5.5 日期处理类 133
5.5.1 Date类 133
5.5.2 Calendar类 135
5.6 日期格式化 138
5.6.1 DateFormat类 139
5.6.2 SimpleDateFormat类 140
5.7 高手带你做——计算课程结束日期 142
5.8 高手带你做——实现日期查询功能 144
5.9 成长任务 149
第6章 Java内置包装类 152
6.1 Object类 152
6.2 Integer类 154
6.3 Float类 156
6.4 Double类 158
6.5 Number类 159
6.6 Character类 160
6.7 Boolean类 163
6.8 Byte类 164
6.9 System类 165
6.9.1 System类的成员变量 166
6.9.2 System类的成员方法 167
6.10 成长任务 169
第7章 数组处理 171
7.1 数组简介 171
7.2 一维数组 171
7.2.1 创建一维数组 171
7.2.2 分配空间 172
7.2.3 初始化一维数组 173
7.2.4 获取单个元素 174
7.2.5 获取全部元素 175
7.2.6 高手带你做——统计商品信息 175
7.3 二维数组 176
7.3.1 创建二维数组 177
7.3.2 初始化二维数组 177
7.3.3 获取单个元素 177
7.3.4 获取全部元素 178
7.3.5 获取整行元素 179
7.3.6 获取整列元素 180
7.4 多维数组 181
7.5 数组的常用处理 181
7.5.1 比较数组 182
7.5.2 填充数组 182
7.5.3 查找数组 183
7.6 复制数组 185
7.6.1 使用copyOf()方法和copyOfRange()方法 185
7.6.2 使用arraycopy()方法 187
7.6.3 使用clone()方法 189
7.7 数组排序 190
7.7.1 内置排序法 190
7.7.2 冒泡排序法 191
7.7.3 快速排序法 192
7.7.4 选择排序法 194
7.7.5 直接插入法 195
7.8 高手带你做——实现商品信息查询功能 196
7.9 成长任务 197
第8章 类和对象 200
8.1 面向对象概述 200
8.1.1 对象的概念 200
8.1.2 面向对象的三大核心特性 200
8.2 高手带你做——认识类和对象 202
8.3 使用类 203
8.3.1 定义类 203
8.3.2 属性 204
8.3.3 高手带你做——创建学生类 205
8.3.4 方法 206
8.3.5 this关键字 208
8.4 对象 209
8.4.1 对象的创建 209
8.4.2 访问对象的属性和行为 212
8.4.3 对象的销毁 212
8.4.4 高手带你做——用户修改密码 213
8.5 作用域修饰符 215
8.5.1 访问控制修饰符 215
8.5.2 static静态修饰符 217
8.5.3 final修饰符 221
8.6 特殊方法 222
8.6.1 main()方法 222
8.6.2 方法的可变参数 224
8.6.3 构造方法 225
8.6.4 高手带你做——查看个人信息 227
8.6.5 析构方法 228
8.7 包 230
8.7.1 系统包 230
8.7.2 自定义包 231
8.8 高手带你做——使用自定义包 231
8.9 成长任务 232
第9章 继承和多态 234
9.1 类的封装 234
9.2 高手带你做——封装图书信息类 235
9.3 类的继承 236
9.3.1 简单继承 237
9.3.2 单继承 239
9.3.3 super关键字 240
9.3.4 对象类型转换 241
9.3.5 强制对象类型转换 243
9.4 方法重载 244
9.5 方法重写 245
9.6 多态 247
9.7 抽象类 249
9.8 接口 251
9.8.1 定义接口 251
9.8.2 实现接口 252
9.9 高手带你做——接口和抽象类的区别 254
9.9.1 基本语法区别 254
9.9.2 设计思想区别 255
9.10 内部类 257
9.10.1 内部类简介 257
9.10.2 高手带你做——使用实例内部类 258
9.10.3 高手带你做——使用静态内部类 261
9.10.4 高手带你做——使用局部内部类 262
9.11 匿名类 263
9.12 高手带你做——利用内部类实现多重继承 265
9.13 成长任务 266
第10章 Java异常处理 268
10.1 了解Java中的异常 268
10.1.1 异常简介 268
10.1.2 高手带你做——异常产生的原因及使用原则 268
10.1.3 异常类型 269
10.2 异常处理语句 270
10.2.1 异常语句结构 270
10.2.2 try catch语句 270
10.2.3 高手带你做——计算平均成绩 272
10.2.4 try catch finally语句 273
10.3 异常的声明和抛出 275
10.3.1 throws声明异常 276
10.3.2 throw抛出异常 277
10.4 自定义异常 278
10.5 高手带你做——验证用户登录信息 280
10.6 高手带你做——完善除法运算的错误提示 282
10.7 成长任务 285
第11章 集合、泛型和枚举 288
11.1 Java集合类概述 288
11.1.1 集合中的接口 288
11.1.2 接口实现类 288
11.2 Collection接口 289
11.3 List集合 291
11.3.1 ArrayList类 291
11.3.2 LinkedList类 294
11.4 Set集合 296
11.4.1 HashSet类 296
11.4.2 TreeSet类 297
11.5 Map集合 300
11.6 Collections类 301
11.6.1 正向排序 301
11.6.2 逆向排序 302
11.6.3 复制 303
11.6.4 填充 305
11.7 泛型 306
11.7.1 泛型集合 306
11.7.2 泛型类 308
11.7.3 泛型方法 309
11.7.4 泛型的高级用法 310
11.8 高手带你做——图书查询功能 311
11.9 枚举 314
11.9.1 声明枚举 314
11.9.2 枚举类 315
11.9.3 为枚举添加方法 316
11.9.4 EnumMap与EnumSet 319
11.10 成长任务 320
第12章 Java反射机制 322
12.1 Java反射简介 322
12.2 反射在类中的应用 323
12.2.1 访问构造方法 323
12.2.2 访问方法 326
12.2.3 访问成员变量 330
12.3 高手带你做——在远程方法中使用反射机制 333
12.4 成长任务 338
第13章 Java输入/输出流 340
13.1 流概述 340
13.1.1 什么是输入/输出流 340
13.1.2 输入流 340
13.1.3 输出流 341
13.2 系统流 342
13.3 操作文件 344
13.3.1 File类简介 344
13.3.2 获取文件属性 345
13.3.3 创建和删除文件 346
13.3.4 创建和删除目录 346
13.3.5 遍历目录 347
13.4 高手带你做——动态读取文件内容 349
13.5 使用字节流 351
13.5.1 字节输入流 351
13.5.2 字节输出流 352
13.5.3 字节数组输入流 353
11.5.4 字节数组输出流 354
13.5.5 文件输入流 355
13.5.6 文件输出流 356
13.6 使用字符流 358
13.6.1 字符输入流 359
13.6.2 字符输出流 359
13.6.3 字符文件输入流 360
13.6.4 字符文件输出流 361
13.6.5 字符缓冲区输入流 363
13.6.6 字符缓冲区输出流 364
13.7 高手带你做——保存图书信息 365
13.8 成长任务 367
第14章 Java多线程编程 370
14.1 线程简介 370
14.2 实现线程 371
14.2.1 继承Thread类 371
14.2.2 实现Runnable接口 375
14.2.3 两种方法比较 376
14.3 线程的生命周期 376
14.4 高手带你做——多线程之间访问实例变量 377
14.5 高手带你做——解决非线程安全问题 380
14.6 线程同步 382
14.7 线程操作方法 384
14.7.1 currentThread()方法 384
14.7.2 isAlive()方法 386
14.7.3 sleep()方法 389
14.7.4 getld()方法 390
14.7.5 yield()方法 391
14.8 高手带你做——停止线程 392
14.8.1 停止不了的线程 392
14.8.2 判断线程是不是停止状态 393
14.8.3 异常法停止线程 396
14.8.4 在休眠中停止 398
14.8.5 强制停止线程 400
14.8.6 释放锁的不良后果 401
14.8.7 使用return停止线程 403
14.9 高手带你做——暂停线程 404
14.9.1 suspend()与resume()方法 404
14.9.2 独占问题 406
14.9.3 不同步问题 408
14.10 线程的优先级和执行顺序 409
14.10.1 优先级概述 409
14.10.2 使用优先级 410
14.11 成长任务 412
第15章 JDBC数据库编程 414
15.1 JDBC技术 414
15.1.1 JDBC简介 414
15.1.2 JDBCAPI简介 414
15.1.3 JDBC驱动类型 415
15.2 连接数据库 417
15.3 使用JDBC驱动程序 417
15.3.1 提供JDBC连接的URL 418
15.3.2 加载JDBC驱动程序 418
15.3.3 数据库驱动类 420
15.3.4 关闭数据库连接 422
15.4 高手带你做——使用ODBC桥连接数据库 423
15.5 执行SQL语句 424
15.5.1 Statement对象 424
15.5.2 PreparedStatement对象 426
15.5.3 CallableStatement对象 428
15.6 处理查询结果 430
15.6.1 使用ResultSet 430
15.6.2 ResultSet接口的方法 431
15.6.3 ResultSetMetaData对象 433
15.7 高级结果集 434
15.7.1 可滚动结果集 434
15.7.2 可更新结果集 437
15.8 高手带你做——获取列的信息 440
15.9 高手带你做——商品管理系统 441
15.10 成长任务 446
第16章 Java网络编程 448
16.1 网络基础 448
16.1.1 网络分类 448
16.1.2 网络编程模型 448
16.1.3 网络协议 449
16.1.4 套接字和端口 450
16.2 InetAddress地址类 450
16.3 TCP通信 452
16.3.1 ServerSocket类 452
16.3.2 Socket类 454
16.3.3 高手带你做——客户端与服务器端的简单通信 456
16.3.4 高手带你做——传输对象数据 458
16.4 UDP通信 462
16.4.1 DatagramPacket类 462
16.4.2 DatagramSocket类 463
16.5 URL通信 465
16.5.1 URL概念 465
16.5.2 URL类 466
16.5.3 URLConneetion类 466
16.5.4 高手带你做——提取URL协议名称 467
16.6 成长任务 468
第17章 Swing界面编程基础 470
17.1 Swing简介 470
17.1.1 Swing类库结构 470
17.1.2 Swing包 470
17.1.3 Swing容器 471
17.2 窗口和面板 472
17.2.1 JFrame窗口 472
17.2.2 JPanel面板 473
17.3 布局管理器 474
17.3.1 边框布局管理器 475
17.3.2 流式布局管理器 476
17.3.3 卡片布局管理器 478
17.3.4 网格布局管理器 479
17.3.5 网格包布局管理器 480
17.3.6 盒布局管理器 483
17.4 基本组件 484
17.4.1 标签组件 484
17.4.2 按钮组件 486
17.4.3 单行文本框组件 487
17.4.4 文本域组件 489
17.4.5 复选框组件 490
17.4.6 单选按钮 491
17.4.7 下拉列表组件 492
17.4.8 列表框组件 494
17.5 高手带你做——实现计算器界面 495
17.6 事件处理 497
17.6.1 事件处理模型 497
17.6.2 动作事件监听器 498
17.6.3 焦点事件监听器 499
17.6.4 高手带你做——监听列表项选择事件 500
17.7 高手带你做——星座选择器 501
17.8 成长任务 504
第18章 Swing高级组件 506
18.1 高级布局组件 506
18.1.1 滑块 506
18.1.2 进度条 508
18.1.3 计时器 511
18.1.4 菜单栏 513
18.1.5 工具栏 518
18.2 选择器组件 521
18.2.1 文件选择器 521
18.2.2 颜色选择器 523
18.3 对话框 524
18.3.1 确认对话框 524
18.3.2 消息对话框 525
18.3.3 输入对话框 526
18.3.4 选项对话框 527
18.4 表格 527
18.5 树 531
18.6 选项卡 533
18.7 高手带你做——制作文本编辑器 535
18.8 成长任务 538
第19章 Java设计模式 540
19.1 认识设计模式 540
19.1.1 设计模式简介 540
19.1.2 设计模式的理解 540
19.1.3 设计模式的分类 541
19.1.4 为什么要学习设计模式 542
19.1.5 如何学习设计模式 543
19.1.6 学习设计模式的层次 543
19.1.7 面向对象的设计原则 544
19.2 单例模式 545
19.3 工厂模式 546
19.3.1 简单工厂模式 546
19.3.2 工厂方法模式 548
19.3.3 抽象工厂模式 551
19.4 适配器模式 553
19.5 外观模式 555
19.6 观察者模式 558
19.7 状态模式 560
19.8 不要过度使用设计模式 563