第1章 Java概述 1
1.1 面向对象的程序设计 1
1.1.1 面向对象的程序设计的基本概念 1
1.1.2 面向对象的程序设计的基本特征 2
1.1.3 面向对象的程序设计的优势 2
1.2 Java的历史及特性 3
1.2.1 Java的发展简史 4
1.2.2 Java语言的特性 4
1.3 安装Java开发环境及主流集成开发环境介绍 5
1.3.1 安装JDK及其帮助文档 5
1.3.2 常用JDK命令介绍 7
1.3.3 Eclipse 12
1.3.4 NetBeans IDE简要介绍 14
1.3.5 集成开发环境的选择 15
1.4 编写第一个Java程序 16
1.4.1 Hello,World! 16
1.4.2 Java环境变量 17
1.4.3 使用EditPlus和JDK编写和运行Java程序 19
1.5 如何学习Java 21
常见问题与实验指导 22
本章小结 23
习题 24
第2章 Java语法基础 25
2.1 标识符和变量 25
2.1.1 注释 25
2.1.2 标识符与关键字 27
2.1.3 分隔符 29
2.2 Java的基本数据类型 31
2.2.1 基本数据类型 31
2.2.2 整型 32
2.2.3 布尔型 32
2.2.4 字符型 33
2.2.5 浮点型 34
2.3 变量和常量 35
2.3.1 变量 35
2.3.2 常量 37
2.4 数据类型转换 37
2.4.1 自动类型转换 38
2.4.2 强制类型转换 39
2.4.3 包装类转换 40
2.5 运算符 43
2.5.1 操作数和表达式 44
2.5.2 优先级和结合方向 44
2.5.3 算术运算符 45
2.5.4 关系运算符 49
2.5.5 逻辑运算符 50
2.5.6 条件运算符 51
2.5.7 位运算符 52
2.5.8 赋值运算符 56
2.5.9 其他运算符 57
2.6 语句和程序块 57
2.6.1 语句 57
2.6.2 程序块 58
2.7 流程控制语句 58
2.7.1 if/else语句 59
2.7.2 switch/case语句 61
2.7.3 while循环语句 64
2.7.4 do/while循环语句 65
2.7.5 for循环语句 66
2.7.6 break语句 68
2.7.7 continue语句 69
2.7.8 return语句 71
2.8 简单的人机交互 72
2.8.1 Scanner类 72
2.8.2 使用BufferedReader类 73
2.8.3 使用main()方法的参数 74
常见问题与实验指导 76
本章小结 76
习题 77
第3章 面向对象基础 79
3.1 类和对象 79
3.2 定义Java类 80
3.3 创建对象 83
3.3.1 使用new运算符创建对象 83
3.3.2 访问成员变量和方法 85
3.4 成员变量 85
3.4.1 类中的变量及其分类 85
3.4.2 成员变量和局部变量的区别 87
3.4.3 编程中选用变量的标准 87
3.5 方法及重载 90
3.5.1 方法的分类 90
3.5.2 参数传递方式 91
3.5.3 递归方法 97
3.5.4 方法重载 98
3.6 构造方法 100
3.6.1 深入理解构造方法 100
3.6.2 构造方法的重载 101
3.7 this关键字 102
3.8 static关键字 105
3.8.1 static修饰变量 106
3.8.2 static修饰方法 106
3.8.3 static修饰程序块 107
3.9 访问控制 109
3.9.1 访问控制修饰符 109
3.9.2 package关键字 110
3.9.3 Java中常见的包 112
3.9.4 import关键字 113
3.9.5 隐藏实现 114
3.10 对象清理 116
常见问题与实验指导 117
本章小结 119
习题 120
第4章 面向对象高级技术 122
4.1 继承基础 122
4.1.1 何时采用继承 124
4.1.2 访问控制 124
4.1.3 继承与组合 126
4.2 父类成员的覆盖 128
4.3 super关键字 130
4.4 Object类 132
4.4.1 toString()方法 132
4.4.2 equals()方法 134
4.5 final关键字 136
4.5.1 final变量 136
4.5.2 final方法 139
4.5.3 final类 140
4.6 多态 141
4.6.1 向上转型 141
4.6.2 向下转型 143
4.6.3 instanceof运算符 144
4.7 抽象类 145
4.7.1 抽象类与抽象方法 145
4.7.2 何时使用抽象类? 147
4.8 接口 150
4.8.1 接口的定义 150
4.8.2 接口的实现 152
4.8.3 接口与抽象类 153
4.8.4 什么情况下使用接口 154
4.9 内部类 154
4.9.1 内部类基础 155
4.9.2 非静态内部类 155
4.9.3 静态内部类 158
4.9.4 局部内部类 159
4.9.5 匿名内部类 160
常见问题与实验指导 161
本章小结 164
习题 165
第5章 数组、字符串及容器类 168
5.1 一维数组 168
5.1.1 一维数组的声明 168
5.1.2 一维数组的初始化 169
5.1.3 一维数组的访问 170
5.2 多维数组 171
5.2.1 二维数组的声明 172
5.2.2 二维数组的初始化 172
5.2.3 二维数组的访问 173
5.3 foreach语句 174
5.4 数组的应用 176
5.5 java.util.Arrays类 180
5.6 字符串 181
5.6.1 String类 182
5.6.2 StringBuffer类 184
5.6.3 Java与C/C++处理字符串的差别 185
5.7 容器 186
5.7.1 容器类介绍 186
5.7.2 Vector类 188
5.7.3 Collection接口 191
5.7.4 Iterator接口 193
5.7.5 List接口 194
5.7.6 Set接口 197
5.7.7 Map接口 200
5.7.8 数组与容器的区别 205
常见问题与实验指导 206
本章小结 207
习题 208
第6章 异常处理机制 209
6.1 异常概述 209
6.2 异常的分类 211
6.2.1 Java的异常分类体系 212
6.2.2 Throwable类介绍 212
6.3 捕获异常 214
6.3.1 try语句 214
6.3.2 catch语句 215
6.3.3 finally语句 217
6.4 声明异常 219
6.5 使用throw抛出异常 220
6.6 自定义异常类 222
常见问题与实验指导 223
本章小结 225
习题 225
第7章 Java I/O流 226
7.1 I/O流概述 226
7.1.1 流的分类 226
7.1.2 Java的I/O流体系结构 229
7.2 File类 230
7.2.1 File类 230
7.2.2 FilenameFilter接口 234
7.3 字节流 235
7.3.1 InputStream和OutputStream类 235
7.3.2 FileInputStream和FileOutputStream类 237
7.3.3 过滤字节流 241
7.3.4 管道字节流 250
7.3.5 内存读写流 251
7.3.6 顺序输入流 253
7.3.7 对象序列化 254
7.3.8 对象流 255
7.4 字符流 256
7.4.1 Reader和Writer类 257
7.4.2 InputStreamReader和OutputStreamWriter类 258
7.4.3 BufferedReader和BufferedWriter类 260
7.4.4 FileReader和FileWriter类 262
7.4.5 CharArrayReader和CharArrayWriter类 263
7.4.6 PipedReader和PipedWriter类 264
7.4.7 StringReader和StringWriter类 266
7.4.8 PrintWriter类 267
7.5 RandomAccessFile类 268
7.6 标准流 270
常见问题与实验指导 272
本章小结 273
习题 274
第8章 多线程 275
8.1 线程简介 275
8.1.1 线程概述 275
8.1.2 线程与进程 276
8.1.3 多线程的优势 277
8.2 创建线程 277
8.2.1 Thread类 277
8.2.2 Runnable接口 279
8.2.3 通过继承Thread类创建线程 279
8.2.4 通过实现Runnable接口创建线程 280
8.3 线程的生命周期与控制 282
8.3.1 线程的生命周期 282
8.3.2 创建状态 282
8.3.3 就绪状态 285
8.3.4 阻塞状态 288
8.3.5 死亡状态 289
8.4 线程的优先级与控制 290
8.4.1 Java的优先级 290
8.4.2 isAlive()方法 291
8.4.3 yield()方法 292
8.4.4 join()方法 294
8.4.5 interrupt()方法 296
8.5 线程的同步 297
8.5.1 多线程引发的问题 297
8.5.2 线程的同步 300
8.6 线程的通信 304
8.6.1 使用共享变量实现线程间通信 304
8.6.2 使用管道流实现线程间通信 308
8.7 守护线程 310
8.8 线程组 311
常见问题与实验指导 313
本章小结 314
习题 314
第9章 Java GUI编程 315
9.1 GUI概述 315
9.2 Java Applet详解 317
9.2.1 Java Applet 317
9.2.2 java.applet.Applet类介绍 319
9.3 容器 323
9.3.1 Frame和JFrame 324
9.3.2 Panel和JPanel 326
9.4 布局管理器 327
9.4.1 FlowLayout布局管理器 328
9.4.2 BorderLayout布局管理器 329
9.4.3 GridLayout布局管理器 330
9.4.4 GridBagLayout布局管理器 332
9.4.5 NetBeans环境下Java GUI设计 335
9.5 AWT和Swing常用组件 337
9.5.1 基本组件 338
9.5.2 菜单 340
9.6 Java的事件处理机制 345
9.6.1 Java事件模型的流程 346
9.6.2 事件类别和事件监听器(Listener) 348
9.6.3 事件适配器(Adapter) 353
9.6.4 监听事件的实现形式 355
9.7 综合实例 361
9.7.1 需求分析 361
9.7.2 基础知识 361
9.7.3 具体实现 364
常见问题与实验指导 365
本章小结 366
习题 367
第10章 Java网络编程 368
10.1 网络基础 368
10.1.1 网络参考模型 368
10.1.2 IP地址和端口 370
10.1.3 TCP与UDP协议 372
10.2 InetAddress对象 373
10.3 URL对象 375
10.3.1 URL简介 375
10.3.2 URL类 375
10.3.3 URLConnection类 377
10.4 基于TCP协议的网络编程 379
10.4.1 客户机-服务器模型 379
10.4.2 Socket类 380
10.4.3 ServerSocket类 382
10.5 基于UDP协议的网络编程 384
10.5.1 DatagramPacket类 385
10.5.2 DatagramSocket类 386
常见问题与实验指导 389
本章小结 390
习题 390
参考文献 391