第3篇 核心技术篇 311
第11章 多线程 311
11.1 线程基础 311
11.1.1 什么是线程 312
11.1.2 Thread类创建线程的方法 312
11.1.3 Thread类创建线程的步骤 315
11.1.4 Runnable接口创建线程的方法 316
11.1.5 Runnable接口创建线程的步骤 318
11.2 线程的生命周期 319
11.2.1 线程的4种状态 320
11.2.2 线程的创建和启动 321
11.3 线程调度 322
11.4 线程同步 325
11.4.1 同步的概念 325
11.4.2 同步的格式 327
11.4.3 同步的应用 328
11.5 线程通信 330
11.5.1 生产者/消费者 330
11.5.2 共享队列 332
11.5.3 运行生产者/消费者 332
11.6 死锁 335
11.7 拓展训练 337
11.7.1 训练一:篮球运动员的比赛安排 337
11.7.2 训练二:ATM的实现 339
11.8 技术解惑 343
11.8.1 线程有哪5种基本状态,它们如何相互转换 343
11.8.2 如何让一个线程运行特定的时间后优雅地终止 343
第12章 异常处理 345
12.1 异常的概念 345
12.2 异常的基本样式 346
12.3 Java异常类 347
12.3.1 异常类的层次结构 348
12.3.2 异常处理方法 349
12.4 异常捕获 351
12.4.1 异常捕获处理语句块 351
12.4.2 必须执行语句块 354
12.4.3 必须执行语句块的意外 355
12.5 异常抛出 356
12.5.1 异常抛出的概念 356
12.5.2 throw 357
12.5.3 throws 358
12.5.4 抛出异常的步骤 361
12.6 自定义异常 362
12.6.1 创建用户自定义异常 362
12.6.2 捕获运行时异常 364
12.7 拓展训练 365
12.7.1 训练一:强制类型转换异常 365
12.7.2 训练二:找不到指定类时异常 366
12.8 技术解惑 367
12.8.1 如何优雅地处理异常 367
12.8.2 详解throw与throws关键字的用法区别 368
第13章 I/O系统 370
13.1 I/O概述 370
13.2 文件 371
13.2.1 File类 371
13.2.2 File类的应用 373
13.2.3 RandomAccessFile类 375
13.2.4 RandomAccessFile类的应用 376
13.3 字节流InputStream、OutputStream 379
13.3.1 字节输入、输出流 379
13.3.2 字节文件输入、输出流 381
13.3.3 字节缓冲输入、输出流 383
13.3.4 字节数据输入、输出流 384
13.3.5 字节对象输入、输出流 386
13.4 字符流Reader、Writer 390
13.4.1 字符读、写流 390
13.4.2 字符输入、输出流 391
13.4.3 文件读、写字符流 393
13.4.4 字符缓冲区读、写流 394
13.5 拓展训练 396
13.5.1 训练一:按顺序创建文件 396
13.5.2 训练二:将一个大文件分割为多个小文件 397
13.5.3 训练三:生成ZIP压缩文件 399
13.6 技术解惑 402
13.6.1 把InputStream转换成String的几种方法 402
13.6.2 读取大文件用哪个类合适 403
第14章 Java数据库编程 405
14.1 数据库简介 405
14.1.1 数据库的概念 405
14.1.2 数据库的特点 406
14.2 SQL语句 406
14.2.1 SQL语句的分类 407
14.2.2 SELECT查询语句 407
14.2.3 INSERT插入语句 407
14.2.4 UPDATE更新语句 408
14.2.5 DELETE删除语句 408
14.2.6 CREATE建表语句 408
14.2.7 ALTER修改表语句 409
14.2.8 DROP删除表语句 409
14.3 MySQL 409
14.3.1 MySQL的安装配置 410
14.3.2 MySQL的使用 413
14.4 JDBC 416
14.4.1 JDBC简介 416
14.4.2 JDBC常见接口和类 417
14.4.3 JDBC数据库连接步骤 417
14.4.4 加载JDBC驱动程序 418
14.4.5 获取Connection连接对象 421
14.4.6 创建Statement对象 423
14.4.7 创建PreparedStatement对象 425
14.4.8 创建ResultSet对象 427
14.5 执行SQL语句的方式 430
14.5.1 使用JDBC API 430
14.5.2 使用execute()方法执行SQL语句 430
14.6 Java与各种数据库的连接 431
14.7 数据库开发案例 433
14.7.1 构造方法 433
14.7.2 数据查询 434
14.7.3 主方法 436
14.8 拓展训练 437
14.8.1 训练一:向数据库中批量插入数据 437
14.8.2 训练二:将图片文件存入数据库 439
14.9 技术解惑 441
14.9.1 多个Connection能实现事务吗 441
14.9.2 如何测试java.sql.Connection类当前的连接是否正常可用 442
第15章 Java网络编程 443
15.1 网络程序设计基础 443
15.1.1 局域网与因特网 443
15.1.2 网络协议 444
15.1.3 端口和套接字 444
15.2 TCP程序设计基础 446
15.2.1 InetAddress类 446
15.2.2 ServerSocket类 448
15.2.3 TCP网络程序 450
15.3 UDP程序设计基础 453
15.3.1 DatagramPacket类 453
15.3.2 DatagramSocket类 453
15.3.3 UDP网络程序 454
15.4 拓展训练 457
15.4.1 训练一:实现网络文件的下载 457
15.4.2 训练二:模仿QQ创建实时聊天室 459
15.5 技术解惑 463
15.5.1 动态替换InetAddress中DNS的做法 463
15.5.2 输出datagramPacket的字符串时后面有很多小方块如何解决 464
第16章 Java图形界面编程 465
16.1 AWT简介 465
16.2 Swing基础 466
16.2.1 Swing的类层次结构 467
16.2.2 Swing的特点 468
16.2.3 Swing程序结构简介 468
16.3 事件类 470
16.3.1 事件类分类 470
16.3.2 动作事件类 471
16.3.3 调整事件类 471
16.3.4 焦点事件类 472
16.3.5 项目事件类 472
16.3.6 键盘事件类 473
16.3.7 鼠标事件类 473
16.3.8 窗口事件类 474
16.4 事件监听器 475
16.4.1 事件监听器接口 475
16.4.2 事件监听器的特点 477
16.5 轻量级容器 477
16.5.1 根面板(JRootPane) 478
16.5.2 面板(JPanel) 478
16.5.3 分层面板(JLayeredPane) 479
16.5.4 滚动窗口(JScrollPane) 479
16.5.5 分隔板(JSplitPane) 479
16.5.6 选项板(JTabbedPane) 480
16.5.7 工具栏(JToolBar) 480
16.6 Swing组件 480
16.6.1 按钮(JButton) 481
16.6.2 复选框(JCheckBox) 481
16.6.3 单选框(JRadioButton) 484
16.6.4 组合框(JComboBox) 485
16.6.5 进度条(JProgressBar) 485
16.6.6 表格(JTable) 485
16.6.7 树(JTree) 486
16.7 拓展训练 487
16.7.1 训练一:设置闪烁的标题栏 487
16.7.2 训练二:建立简单的时钟布局 489
16.7.3 训练三:给你最喜爱的脱口秀演员投票 492
16.7.4 训练四:包含图片的弹出菜单 495
16.7.5 训练五:震动效果的提示信息 497
16.8 技术解惑 499
16.8.1 Swing重要吗 499
16.8.2 Swing是否适合做大型项目及桌面应用 499
第4篇 实战篇 501
第17章 综合案例:学生信息管理系统 501
17.1 需求分析 501
17.2 系统设计 501
17.3 登录模块 503
17.3.1 设计构想 503
17.3.2 实现登录模块 503
17.4 学生信息管理系统 506
17.4.1 设计构想 506
17.4.2 实现学生信息管理系统主界面 507
17.4.3 增加学生信息 509
17.4.4 删除学生信息 512
17.4.5 修改学生信息 515
17.4.6 查询学生信息 519
17.4.7 成绩查询 523
17.4.8 退出系统 526
17.5 教师信息管理系统 528
17.5.1 教师信息管理系统主界面 528
17.5.2 增加教师信息 531
17.5.3 删除教师信息 534
17.5.4 修改教师信息 537
17.5.5 录入成绩 541
17.5.6 删除成绩 544
17.5.7 修改成绩 547
17.5.8 教师信息查询 550
17.5.9 退出系统 554
17.6 开发常见问题与解决 554
第18章 综合案例:进销存管理系统 556
18.1 系统分析 556
18.2 系统设计 557
18.2.1 系统架构 558
18.2.2 关键数据结构图 559
18.3 开发环境 559
18.3.1 服务器软件环境 559
18.3.2 服务器硬件环境 560
18.4 数据表设计 560
18.4.1 订单表设计 560
18.4.2 商品表设计 560
18.4.3 用户数据表设计 561
18.4.4 货架数据表设计 561
18.4.5 销售记录数据表设计 561
18.4.6 工作记录数据表设计 561
18.5 创建项目 562
18.6 系统文件夹组织结构 562
18.7 公共类设计 563
18.8 登录模块设计 565
18.9 系统主窗口设计 565
18.10 进货单模块设计 569
18.11 销售单模块设计 571
18.12 库存管理模块设计 573
18.13 数据库备份与恢复模块设计 575
18.14 运行项目 576
18.15 系统打包发行 576