第一篇Java语言语法基础——面向过程知识 1
第1章Java技术概览 1
1.1 Java技术 1
1.1.1 Java编程语言 1
1.1.2 Java语言平台 2
1.1.3 Java语言的功能 3
1.1.4 Java语言的优点 3
1.2 Windows下的“HelloWorld”应用程序 4
1.2.1创建应用程序的软件环境 4
1.2.2创建“HelloWorld”应用程序的步骤 5
1.3深入探讨“HelloWorld”应用程序 7
1.3.1注释源代码 7
1.3.2实现类定义 7
1.3.3详解main方法 8
1.4常见疑难问题解答 8
1.4.1环境变量设置错误 8
1.4.2语法错误 9
1.4.3语义错误 9
1.4.4运行时错误 9
1.5小结 10
1.6实践题 11
第2章Java开发工具及环境设置 12
2.1 Java开发工具简介 12
2.1.1下载并安装JDK 12
2.1.2设定环境变量 15
2.1.3验证JDK环境是否配置成功 15
2.2 JDK内置工具 16
2.2.1 JDK常用工具 16
2.2.2 JDK常用工具实例 16
2.2.3应用程序发布工具 17
2.3一个简单的Java应用程序 18
2.4一个简单的Java Applet应用程序 19
2.4.1编写一个Applet 19
2.4.2编写承载Applet Java程序的HTML文件 19
2.4.3 Applet的运行过程 20
2.5注释及内嵌式文档 20
2.6常见疑难问题解答 21
2.6.1 JDK和J2SDK的区别 21
2.6.2 Java文件扩展名是否区分大小写 22
2.7小结 22
2.8实践题 22
第3章Java语言中的数据与运算符 23
3.1数制 23
3.1.1基本概念 23
3.1.2 Java语言中的数制表现形式 23
3.2数据类型 24
3.2.1整型 24
3.2.2字符型 27
3.2.3浮点型 27
3.2.4布尔型 29
3.3变量 30
3.3.1变量的声明 30
3.3.2变量的含义 30
3.3.3变量的分类 30
3.4变量如何初始化 32
3.5常量 34
3.6运算符 35
3.6.1算术运算符 35
3.6.2关系运算符 39
3.6.3逻辑运算符 40
3.6.4位运算符 42
3.6.5移位运算符 44
3.6.6赋值运算符 45
3.6.7三元运算符 46
3.6.8逗号运算符 47
3.6.9转型运算符 47
3.6.10运算符的优先级别 48
3.7常见疑难解答 48
3.7.1如何将十进制转换成二进制 48
3.7.2转型运算符会引起精度问题,为什么还要使用它 48
3.8小结 48
3.9实践题 49
第4章 程序设计中的流程控制 50
4.1编程风格 50
4.2条件语句 51
4.2.1条件语句的种类 52
4.2.2如何使用好条件语句 56
4.3循环语句 57
4.3.1 for循环语句 57
4.3.2 while循环 60
4.3.3 do…while语句 63
4.4中断与继续语句 64
4.4.1中断控制语句 64
4.4.2继续语句 66
4.5分支语句 67
4.6返回语句 70
4.7常见疑难解答 71
4.7.1普通循环是使用for语句还是while语句 71
4.7.2一般的程序可否用分支语句来代替条件语句 71
4.8 小结 71
4.9实践题 71
第5章 数组 73
5.1数组概念的引入 73
5.1.1实例的引入 73
5.1.2数组的概念 73
5.1.3用实例说明数组的用处 74
5.2基本数据类型的数组 74
5.2.1基本类型数组的声明 74
5.2.2基本类型数组的初始化 75
5.3由实例引出不同数组种类及其使用 76
5.3.1由实例引出一维数组及其使用 76
5.3.2由实例引出二维数组及其使用 79
5.4数组的综合实例 80
5.5常见疑难解答 84
5.5.1声明数组需要注意什么 84
5.5.2数组在平时的程序代码中使用是否频繁 84
5.6小结 84
5.7实践题 84
第6章 字符串的处理 85
6.1字符串的基本概念 85
6.2字符串处理的类库种类 86
6.2.1字符串的赋值 86
6.2.2字符串的处理类——String 86
6.2.3字符串处理的方法 89
6.2.4缓冲字符串处理类——StringBuffer 97
6.2.5缓冲字符串StringBuffer类的构造器 97
6.2.6缓冲字符串处理的方法 98
6.2.7缓冲字符串类的特点 102
6.3用实例演示如何处理字符串 102
6.4如何格式化输出 103
6.5常见疑难解答 104
6.5.1 “equals”和“==”的区别 104
6.5.2 String类为何被定义成final约束 104
6.5.3 char类型如何转换成int类型,int类型如何转换成字符串 104
6.6小结 105
6.7实践题 105
第二篇Java语言语法进阶——面向对象知识 107
第7章类 107
7.1 JDK相关版本特性 107
7.1.1什么是JDK 107
7.1.2 JDK 5的特点 107
7.1.3 JDK 6的特点 108
7.1.4 JDK 7的特点 108
7.1.5各种JDK版本的比较 109
7.2用比较法阐述类的概念 109
7.3 Java中已有的类 109
7.3.1 Java的数学运算处理类Math 110
7.3.2测试时间和日期的类Date 112
7.3.3测试日历的类GregorianCalendar 113
7.3.4日历处理的实例解析 114
7.4用实例分析设计一个类的流程 116
7.4.1如何在现实程序设计中提取一个类 116
7.4.2设置器和访问器 123
7.4.3总结 124
7.5常见疑难解答 124
7.5.1类在程序语言中起到了什么作用 124
7.5.2设置器和访问器的作用 124
7.6小结 125
7.7实践题 125
第8章 对象和包 126
8.1对象 126
8.1.1什么是对象 126
8.1.2操作对象 127
8.1.3初始化对象 127
8.2对象家族中的成员 128
8.2.1对象的成员方法 128
8.2.2对象的成员变量 133
8.3对象中访问控制符的重要性 133
8.3.1什么是访问控制符 133
8.3.2如何使用访问控制符及其重要性 136
8.4重载 137
8.4.1什么是重载 137
8.4.2用实例来说明重载的意义 138
8.5包 139
8.5.1什么是Java中的包 140
8.5.2如何实现包 140
8.5.3什么是类路径和默认包 141
8.5.4包的作用域 141
8.5.5静态导入 142
8.6注释及嵌入文档 143
8.6.1如何添加注释 143
8.6.2类、方法、字段等注释的方法 143
8.7常见疑难解答 144
8.7.1包在实际编程中究竟有什么作用 144
8.7.2访问控制符在实际开发有什么作用 144
8.7.3一个文件中定义了两个class类是否生成一个.class文件 144
8.8小结 144
8.9实践题 145
第9章 继承 146
9.1什么是继承 146
9.1.1继承的引出 146
9.1.2继承的概念 146
9.2如何实现继承 148
9.3构造函数的使用 149
9.3.1什么是构造函数 150
9.3.2继承中构造函数的初始化 150
9.3.3替代父类和本身的方式 151
9.3.4 Java中的单继承性 152
9.4继承中的覆盖现象 152
9.5类之间的关系 153
9.5.1依赖 153
9.5.2聚合 154
9.5.3继承 154
9.6继承层次图 154
9.7如何设计好继承 155
9.8常见疑难解答 155
9.8.1 Java不支持多继承,如何处理一个类继承多个父类的情况 155
9.8.2如果出现了带参数的构造函数,可否不在代码中写出来 155
9.9小结 155
9.10实践题 155
第10章 多态 157
10.1多态的产生 157
10.2多态的概念 158
10.2.1使用多态编写程序 159
10.2.2覆盖的应用 160
10.2.3重载与覆盖的实例对比 161
10.2.4覆盖的多态性 162
10.2.5传值引用和传址引用 163
10.3通过实例熟悉多态用法 165
10.4绑定 167
10.4.1静态绑定 167
10.4.2动态绑定 167
10.5超类 167
10.5.1什么是超类 167
10.5.2 equals方法的使用 168
10.5.3通用编程 168
10.6常见疑难解答 168
10.6.1动态和静态编译是什么 168
10.6.2绑定与多态的联系是什么 168
10.6.3多态与重载的区别是什么 169
10.7小结 169
10.8实践题 169
第11章 接口与内部类 172
11.1接口 172
11.1.1接口概念的引入 172
11.1.2接口的概念 172
11.1.3接口的声明 173
11.1.4接口的实现 173
11.1.5接口的多重实现 178
11.1.6接口的属性 184
11.1.7接口的继承 184
11.1.8接口意义 189
11.2内部类 189
11.2.1使用内部类来访问对象 190
11.2.2局部内部类 192
11.2.3静态内部类 195
11.2.4匿名内部类 196
11.3常见疑难解答 196
11.3.1匿名类如何在程序中使用 196
11.3.2接口与继承有什么区别 196
11.4小结 196
11.5实践题 196
第12章 抽象 198
12.1抽象的概念 198
12.1.1什么是抽象 198
12.1.2抽象的综合实例 199
12.2抽象类 201
12.2.1什么是抽象类 202
12.2.2抽象类的实例 202
12.3抽象与接口的区别 207
12.4枚举 207
12.4.1关于枚举的实现原理 207
12.4.2枚举的简单应用 209
12.4.3关于枚举的高级特性 210
12.5反射(Reflection) 212
12.5.1关于反射的基石——Class类 212
12.5.2关于反射的基本应用 214
12.5.3关于反射的高级应用 219
12.6标注 221
12.6.1标注的简单使用 222
12.6.2关于JDK的内置标注 223
12.7泛型 225
12.7.1为什么要使用泛型 225
12.7.2关于泛型的一些特性 228
12.7.3关于泛型的通配符 230
12.8类加载器 232
12.8.1什么是类加载器 232
12.8.2什么是类加载器的委派模型 233
12.9动态代理 235
12.9.1什么是代理 235
12.9.2关于动态代理基础类 236
12.9.3关于InvocationHandler接口 240
12.9.4动态代理类的设计模式 243
12.10常见疑难解答 244
12.10.1抽象类和接口在概念上有什么区别 244
12.10.2如何从设计理念上看待抽象类和接口 245
12.11小结 247
12.12实践题 247
第三篇Java语言编程主题 249
第13章 线程 249
13.1线程的基本概念 249
13.1.1进程及其使用环境 249
13.1.2线程及其使用环境 249
13.2线程创建 250
13.2.1如何创建线程 250
13.2.2通过实例熟悉如何创建线程 253
13.3线程的使用 257
13.3.1线程的优先级 257
13.3.2线程的休眠与唤醒 259
13.3.3线程让步 263
13.3.4线程同步 264
13.3.5同步块 266
13.3.6同步化方法 269
13.4实例分析 270
13.4.1生产者与消费者的程序设计及分析 270
13.4.2多消费者的程序设计及分析 273
13.4.3多生产者的程序设计及分析 276
13.5常见疑难解答 281
13.5.1 Java中线程与线程之间怎么通信 281
13.5.2什么是进程的死锁和饥饿 281
13.5.3什么时候会涉及线程程序 282
13.6小结 282
13.7实践题 282
第14章 封装 283
14.1封装的介绍 283
14.2在程序设计中为什么要使用封装 286
14.3结合实例讲述如何设计封装 287
14.4在程序设计中设计封装的注意点 292
14.5常见疑难解答 293
14.5.1封装在现实开发中给程序员带来什么启发 293
14.5.2封装在实际开发中的应用有哪些 294
14.6小结 294
14.7实践题 294
第15章Java输入与输出(I/O) 295
15.1输入与输出的重要性 295
15.2 Java重要的输入输出类 295
15.3文件或目录信息的处理 296
15.3.1 File常用的操作方法 296
15.3.2文件处理方法的应用 297
15.3.3文件和目录的完全处理 297
15.4读取数据的媒介之一——流(Stream) 300
15.4.1什么是流 300
15.4.2什么是输入流和输出流 300
15.4.3字节输入流及输出流 300
15.4.4使用文件字节输入流读取文件 301
15.4.5使用文件字节输出流输出文件 302
15.5多字节数据读取类——Filter类 304
15.5.1 Filter流的概念 304
15.5.2处理字节类型以外的文件输入 304
15.5.3处理字节类型以外的文件输出 305
15.5.4增强的多字节输出流DataOutput 306
15.5.5增强的多字节输入流DataInput 307
15.6读取数据的媒介之二——字符流 310
15.6.1字符流的概念 310
15.6.2抽象字符输入流Reader类的使用 310
15.6.3抽象字符输出流Writer类的使用 310
15.6.4读取带缓存的B ufferedReader字符流 310
15.6.5带缓存的字符输出流BufferedWriter类 311
15.6.6字符输入流FileReader类和File Writer类的使用 314
15.6.7如何用标准输入流System.in来获取数据 316
15.6.8打印输入流PrintWriter类与PrintStream类的区别 317
15.6.9随机文件访问RandomAccessFile类 318
15.7利用对象序列化控制输入输出 321
15.7.1什么是对象序列化 321
15.7.2基本数据和对象数据读写ObjectInput接口与ObjectOutput接口 321
15.7.3对象序列化处理ObjectOutputStream类 321
15.7.4对象序列化处理ObjectInputStream类 322
15.8常见疑难解答 323
15.8.1字节流与字符流主要的区别 323
15.8.2输入流与输出流如何区分,各有什么作用 324
15.8.3什么是管道流 324
15.9小结 324
15.10实践题 325
第16章 异常与处理及内存管理 326
16.1异常的概念 326
16.1.1异常的分类 326
16.1.2异常的声明 327
16.1.3异常的抛出 328
16.2异常的捕获 330
16.2.1捕获多个异常 330
16.2.2自定义异常 332
16.3内存的管理和回收 334
16.4常见疑难解答 335
16.4.1为什么要声明方法抛出异常 335
16.4.2为什么抛出的异常一定是检查异常 335
16.5小结 335
16.6实践题 335
第17章Java中对数据的处理 337
17.1如何将基本数据类型转换为对象 337
17.1.1为什么要将基本数据转换为对象 337
17.1.2 Wrapper类的构造函数 338
17.1.3包装类的常用函数 339
17.1.4基本数据的拆装箱操作(autoboxing和unboxing) 341
17.2如何处理随机性的数据 342
17.2.1 Random类的基础知识 342
17.2.2通过实例熟悉Random类的常用方法 343
17.3如何对数据进行排列、整理 346
17.3.1 Arrays类的常用方法 346
17.3.2实例分析 348
17.4常见疑难解答 352
17.4.1 Random类函数在现实生活中有什么用处 352
17.4.2数组的排列和整理数据在实际应用中有什么用处 352
17.5小结 352
17.6实践题 352
第18章 数据结构 354
18.1数据结构接口及实现 354
18.1.1数据结构接口的实质 354
18.1.2用实例来熟悉数据结构接口的实现 355
18.2 Collection集合接口与Iterator迭代器接口 356
18.2.1熟悉Collection集合接口 356
18.2.2 List链表接口和Set接口 357
18.2.3 Map映射接口 358
18.2.4 Iterator迭代器接口 359
18.2.5通过实例来认识迭代器的实现 360
18.3常见疑难解答 362
18.3.1 Collection集合接口和Collections集合类的区别 362
18.3.2 ArrayList数组列表类和Vector存储类的区别 362
18.3.3 HashMap散列映射和Hashtable散列表的区别 362
18.3.4数据结构的种类有哪些 362
18.3.5 List链表接口和Set接口的区别 363
18.4小结 363
18.5实践题 363
第19章Java中的数据结构 364
19.1链表 364
19.1.1什么是Java中的链表 364
19.1.2用程序代码段实现对链表的添加 365
19.1.3用程序代码段实现对链表的删除 367
19.2数组列表类 371
19.2.1什么是数组列表类 371
19.2.2通过实例熟悉数组列表如何存储数据 372
19.3散列表 376
19.3.1什么是散列表 376
19.3.2通过实例熟悉散列表如何存储数据 377
19.4散列集 380
19.4.1什么是散列集 381
19.4.2通过实例熟悉散列集如何存储数据 381
19.5树集 386
19.5.1什么是树集 386
19.5.2通过实例熟悉树集如何存储数据 387
19.6映像 390
19.6.1什么是映像 391
19.6.2通过实例熟悉映像如何存储数据 391
19.7常见疑难解答 394
19.7.1哪些是线程安全的数据结构 394
19.7.2 Vector是什么样的数据结构 395
19.8小结 395
19.9实践题 396
第 20章XML基础 397
20.1 XML的产生及与HTML的比较 397
20.2 XML的编辑工具 399
20.3 XML文档 399
20.3.1 XML的声明 400
20.3.2文档类型的声明 400
20.3.3元素 400
20.3.4注释 402
20.3.5处理指令 402
20.3.6空白处理 402
20.3.7行尾处理 403
20.3.8语言标识 403
20.3.9一个简单的有关XML的实例 403
20.4关于XML的高级知识 403
20.4.1什么才是格式良好的XML文档 404
20.4.2 DTD文档的作用 404
20.4.3 DTD的结构 405
20.4.4几个简单有关DTD的实例 407
20.5关于XML文档的操作 409
20.5.1下载Dom4J组件 410
20.5.2安装和配置Dom4J组件 411
20.5.3 Dom4J组件的简单使用——解析XML文件 411
20.5.4 Dom4J组件的简单使用——创建XML文件 414
20.6关于XML文档的高级操作 417
20.6.1下载Sax类库 417
20.6.2安装和配置Sax组件 417
20.6.3 Sax组件的简单使用——解析XML文件 418
20.7常见疑难解答 421
20.7.1 XML与HTML的区别 421
20.7.2 XML有哪些显示数据的方式 421
20.8小结 421
20.9实践题 422
第21章JDBC及其应用 423
21.1数据库基础知识 423
21.1.1什么是数据库 423
21.1.2数据库的分类及功能 424
21.1.3关系数据库的设计 424
21.1.4数据库设计技巧 425
21.2 JDBC的基础概念 426
21.2.1 JDBC驱动程序的分类 426
21.2.2利用Java到数据库协议方式连接数据库 427
21.2.3利用Java到本地API方式连接数据库 428
21.2.4利用JDBC-ODBC方式连接数据库 430
21.3关于SQL Server 2005数据库基础操作 432
21.3.1什么是支持SQL语言的数据库 432
21.3.2通过SQL语言如何操作数据库 433
21.3.3安装SQL Server 2005 434
21.3.4高级SQL类型 437
21.3.5使用SQL创建数据库 437
21.4 JDBC基本编程 439
21.4.1如何建立数据库 439
21.4.2如何操作数据库 441
21.5关于JDBC的高级操作 446
21.5.1什么是事务处理 446
21.5.2事务处理的过程演练 447
21.5.3预查询 449
21.6常见疑难解答 450
21.6.1操作数据库的具体步骤是什么 450
21.6.2数据库中的视图、图表、缺省值、规则、触发器、存储过程的意义 451
21.7小结 451
21.8实践题 452
第22章Swing组件与布局管理器 453
22.1什么是Swing编程 453
22.2 MVC设计模式基础 453
22.3简单框架设计及实例 454
22.3.1创建一个空白的框架 454
22.3.2创建框架的其他工作 455
22.4简单图形按钮控件的设计及实例 456
22.4.1 Swing中的按钮控件 456
22.4.2按钮的模型 457
22.4.3添加按钮 457
22.4.4如何添加单选按钮 458
22.4.5复选按钮 460
22.4.6 ToggleButton按钮 461
22.5简单文本输入组件的设计及实例 462
22.5.1文本域的设计 462
22.5.2密码域的设计 463
22.5.3如何设计文本区 464
22.6标签组件的设计及实例 465
22.7选择组件的设计及实例 466
22.8菜单的组件设计 468
22.9对话框的种类及用法 469
22.10复杂布局管理器的种类及用法 470
22.10.1箱式布局的设计 470
22.10.2网格组布局的设计 472
22.11通过实例熟悉Swing编程 473
22.12常见疑难解答 476
22.12.1如何处理菜单的启用和禁用功能 476
22.12.2如何编写快捷键的程序 476
22.13小结 476
22.14实践题 476
第23章 开发工具的使用 477
23.1 Eclipse简介 477
23.1.1下载并安装Eclipse 478
23.1.2 Eclipse界面介绍 479
23.2如何使用Eclipse进行开发 481
23.2.1如何新建一个Java工程 481
23.2.2如何新建一个Java的类 481
23.2.3编写代码 482
23.3如何使用MyEclipse进行开发 484
23.3.1下载并安装MyEclipse 484
23.3.2关于MyEclipse的一些常用操作 485
23.4常见疑难解答 488
23.4.1 Eclipse和Uedit两个开发工具的优缺点 488
23.4.2什么是IDE环境 488
23.4.3有关Eclipse的编译报错的原因 489
23.5小结 489
23.6实践题 489
第24章Applet设计 490
24.1 Applet的基本概念及生命周期 490
24.2 Applet的多媒体处理 492
24.2.1声音处理 492
24.2.2图像处理 493
24.3浏览器与Applet的设计 494
24.3.1如何将Applet嵌入浏览器 494
24.3.2如何使用Applet类编程 494
24.3.3如何用Applet控制浏览器 496
24.4 Applet的安全 496
24.5一个Applet的综合实例分析 497
24.6常见疑难解答 500
24.6.1浏览器如何运行Applet 500
24.6.2有关Applet无法在IE中显示问题的解答 501
24.7小结 501
24.8实践题 501
第25章 网络编程基础 503
25.1网络基础知识 503
25.2 TCP与UDP 503
25.3端口与套接字 504
25.4 TCP程序设计基础 504
25.4.1如何设计TCP的程序 504
25.4.2一个简单的例子 507
25.5 UDP程序设计基础 508
25.5.1如何设计UDP的程序 508
25.5.2一个简单的例子 508
25.6如何设计网络程序 510
25.6.1单向通信综合实例 510
25.6.2双向通信综合实例 512
25.7常见疑难解答 515
25.7.1 TCP和UDP的区别 515
25.7.2什么是TCP/IP协议?分为几层?协议有什么功能? 516
25.8小结 517
25.9实践题 517
第四篇Java语言程序设计实例与面试题剖析 519
第26章 学校管理系统 519
26.1开发背景 519
26.2需求分析 519
26.3登录界面的设计 520
26.3.1登录界面的分析 520
26.3.2登录界面的代码实现 520
26.3.3登录界面的实现 522
26.4主界面的设计 523
26.4.1主界面类的分析 524
26.4.2主菜单界面类的代码 524
26.4.3主菜单界面类的实现 532
26.5数据库系统的设计 533
26.5.1数据库中表的创建 533
26.5.2数据库中代码段 537
26.6学生信息系统界面的设计 538
26.6.1学生类的设计 538
26.6.2储存类的设计 539
26.6.3学生信息界面的设计 541
26.7教师信息系统界面的设计 549
26.7.1教师类的设计 549
26.7.2储存类的设计 551
26.7.3教师信息界面的设计 553
26.8领导信息系统界面的设计 562
26.8.1领导类的设计 562
26.8.2储存类的设计 563
26.8.3领导信息界面的设计 564
26.9小结 572
第27章 面试题 573
面试题1 Java的引用和C++的指针有什么区别 573
面试题2类和对象有什么区别 574
面试题3说明private、 protected、 public和default的区别 575
面试题4 Java可以用非O来代表true吗 576
面试题5 StringBuffer和StringBuilder存在的作用是什么 576
面试题6二维数组的长度是否固定 577
面试题7符合什么条件的数据集合可以使用foreach循环 578
面试题8如何序列化和反序列化一个Java对象 579
面试题9如何使用Java的线程池 579
面试题10如何利用反射实例化一个类 580
面试题11 TCP协议的通信特点是什么 580
面试题12请简述JDBC操作数据库的编程步骤 580
面试题13如何使用连接池技术 580
面试题14简述接口和抽象类的区别 580
面试题15 如何理解Java中的装箱和拆箱 580
面试题16根据代码判断创建的对象个数 581
面试题17分析循环程序的运行结果 582
面试题18可以返回最大值的方法 583
面试题19关于垃圾回收的疑问 583
面试题20线程问题:找出代码中的错误 584
面试题21关于ArrayList、 Vector、 LinkedList的问答题 584