本书全面而深入地讲解Java编程知识,并揭示Java各种特性的设计根源和目标,帮助读者学习并理解Java的本质和精髓。全书分为五大部分,共26章和3个附录,内容包括:Java基础、面向对象编程、图形用户界面、高级主题和Java Web技术。每章最后配有一组复习题和练习题,帮助读者巩固本章所学知识。附录部分提供了习题答案,并提供了Borland JBuilder以及Sun One Studio 4的使用说明。
本书适合初学计算机编程的读者或初学Java的程序员作为全面学习Java的教材。希望对Java获得更深理解的Java程序员也将在本书中受益匪浅。
第一部分 Java基础
第1章 Java简介 3
1.1 Java是什么 4
1.1.1 历史 4
1.1.2 为什么使用Java 4
1.1.3 Java的表征性术语 5
1.2 建立Java编程环境 6
1.2.1 Microsoft Windows 6
1.2.2 Linux 6
1.3 编写第一个Java程序 7
1.3.1 编译第一个Java程序 7
1.3.2 运行第一个Java程序 9
1.3.3 理解第一个Java程序 9
1.4 小结 11
第2章 关键字. 数据类型和变量 12
2.1 编程新手 13
2.2 关键字 13
2.3 数据类型 13
2.3.1 人/机通信问题 14
2.3.2 基元数据类型 15
2.4 变量 17
2.5 字面值 19
2.6 数值类型之间的转换 19
2.7 数据类型之间的强制转换 21
2.8 常量 21
2.9 小结 22
2.10 复习题 22
第3章 运算符 23
3.1 算术运算符 24
3.1.1 加法 24
3.1.2 减法 24
3.1.3 乘法 24
3.1.4 除法 25
3.1.5 模数 25
3.2 递增和递减运算符 26
3.3 关系运算符 26
3.4 位运算符 27
3.4.1 与 28
3.4.2 或 29
3.4.3 异或 29
3.4.4 非运算符 29
3.4.5 实际的应用程序 29
3.5 逻辑运算符 30
3.5.1 与 30
3.5.2 或 30
3.5.3 短路运算符 31
3.6 移位运算符 31
3.6.1 左移运算符 32
3.6.2 右移 32
3.6.3 右移(补零) 33
3.7 运算符的优先级 33
3.8 小结 35
3.9 复习题 35
第4章 流控制 36
4.1 条件语句 37
4.1.1 if-then-else语句 37
4.1.2 switch语句 40
4.2 循环结构 42
4.2.1 while语句 42
4.2.2 do语句 42
4.2.3 for语句 43
4.2.4 跳出循环 45
4.2.5 在循环中继续执行 45
4.2.6 标签 46
4.3 小结 47
4.4 复习题 47
4.5 练习题 47
第5章 方法 48
5.1 分而治之 49
5.2 方法的格式 49
5.3 调用方法 50
5.4 复杂的类方法 51
5.5 变量作用域 52
5.6 递归 52
5.7 方法的重载 53
5.8 Java类库 54
5.9 小结 56
5.10 复习题 56
5.11 练习题 56
第二部分 面向对象编程
第6章 类 59
6.1 面向对象程序设计 62
6.1.1 封装 62
6.1.2 信息隐藏 62
6.2 类 62
6.2.1 CarObject类 62
6.2.2 组件属性 63
6.2.3 状态属性 63
6.2.4 行为(方法) 63
6.2.5 Get/Set方法 63
6.2.6 构造函数 64
6.2.7 类范围 65
6.2.8 控制对成员的访问 65
6.2.9 this变量 65
6.2.10 常量 65
6.2.11 组合 66
6.2.12 垃圾收集 66
6.2.13 终结器 66
6.2.14 静态类成员 67
6.3 内部类 67
6.3.1 范围 67
6.3.2 访问修饰符 68
6.3.3 静态内部类 68
6.3.4 匿名内部类 68
6.4 理解对象引用 68
6.5 小结 69
6.6 复习题 69
6.7 练习题 69
第7章 继承 70
7.1 问题的由来 71
7.2 解决方案:接口 73
7.3 何时使用继承 75
7.4 继承关系的准则 75
7.5 树形图 76
7.6 语法 76
7.6.1 final类 76
7.6.2 抽象类 76
7.6.3 访问修饰符 77
7.7 类的终结器 77
7.8 重载方法 78
7.9 动态绑定和多态 78
7.10 小结 78
7.11 复习题 79
7.12 练习题 79
第8章 接口 80
8.1 问题的由来 81
8.2 多重继承 82
8.3 接口语法 83
8.4 实现接口 83
8.5 使用接口实现多重继承 84
8.6 使用接口为类添加外部性能 84
8.7 接口与抽象类的对比 84
8.8 小结 84
8.9 复习题 85
8.10 练习题 85
第9章 异常处理 86
9.1 问题的由来 87
9.2 异常的定义 90
9.2.1 try块 90
9.2.2 catch块 90
9.2.3 finally块 90
9.3 异常的语法 91
9.4 异常类 92
9.5 引发异常 94
9.5.1 声明异常列表 94
9.5.2 创建异常实例 94
9.5.3 引发异常 94
9.6 重新引发异常 95
9.7 通过方法传递异常 95
9.8 创建自定义异常 95
9.9 小结 96
9.10 复习题 97
9.11 练习题 97
第10章 Java类 98
10.1 JavaDoc简介 99
10.2 使用Java的包装类 100
10.2.1 Boolean类 101
10.2.2 Byte类 101
10.2.3 Character类 102
10.2.4 Double类 103
10.2.5 Float类 104
10.2.6 Integer类 105
10.2.7 Long类 106
10.2.8 Short类 107
10.3 使用String类 108
10.3.1 String类 109
10.3.2 StringBuffer类 112
10.3.3 StringTokenizer类 113
10.4 小结 114
10.5 复习题 115
10.6 练习题 115
第11章 集合类 116
11.1 集合类解决的问题 117
11.2 数据结构简介 117
11.2.1 数组数据结构 117
11.2.2 链表数据结构 118
11.2.3 堆栈数据结构 120
11.2.4 队列数据结构 121
11.2.5 哈希表数据结构 121
11.2.6 树数据结构 123
11.3 集合概念 124
11.3.1 列表 125
11.3.2 Set接口 125
11.3.3 Map接口 125
11.3.4 Iterator 125
11.4 集合类 125
11.4.1 ArrayList 126
11.4.2 向量 127
11.4.3 LinkedList 128
11.4.4 Stack类 129
11.4.5 HashSet 129
11.4.6 TreeSet 130
11.4.7 HashMap 131
11.4.8 TreeMap 132
11.5 小结 133
11.6 复习题 133
第12章 使用Java的输入和输出类 135
12.1 问题的由来 136
12.2 作为输入和输出数据源的流 137
12.3 面向字节的流类 137
12.3.1 预定义的流对象 138
12.3.2 过滤流 138
12.3.3 读写文件 139
12.3.4 其他字节I/O类 141
12.4 字符流 141
12.4.1 使用Reader/Writer执行文件I/O 142
12.4.2 字节和字符I/O类 143
12.4.3 执行其他字符I/O 的Reader和Writer类 143
12.4.4 StreamTokenizer 143
12.5 链接流以便使用 144
12.6 小结 144
12.7 复习题 144
12.8 练习题 144
第三部分 图形用户界面
第13章 抽象窗口工具包 147
13.1 容器 148
13.1.1 Applet 149
13.1.2 运行小程序 149
13.1.3 Frame 150
13.1.4 Panel 154
13.1.5 ScrollPane 154
13.2 对话框编程 156
13.3 向GUI添加AWT组件 157
13.3.1 TextField 157
13.3.2 添加按钮 158
13.3.3 TextArea 160
13.3.4 CheckBox 161
13.3.5 CheckboxGroup 162
13.3.6 选择控件编程 163
13.3.7 列表控件编程 163
13.3.8 MenuBar 165
13.3.9 MenuItem 166
13.4 布局管理器 166
13.4.1 BorderLayout管理器 167
13.4.2 FlowLayout 168
13.4.3 GridBagLayout 168
13.5 小结 169
13.6 复习题 170
13.7 练习题 170
第14章 事件委派模型 171
14.1 理解事件 172
14.2 Java事件模型编程 173
14.3 其他事件监听器接口的使用 175
14.3.1 ActionListener接口 176
14.3.2 AdjiustmentListener接口 177
14.3.3 ItemListener接口 178
14.3.4 TextListener接口 179
14.3.5 KeyListener和KeyAdapter接口 180
14.3.6 WindowListener和WindowAdapter接口 181
14.3.7 ComponentListener和 ComponentAdapter接口 183
14.3.8 MouseListener和MouseAdapter接口 183
14.3.9 MouseMotionListener和MouseMotionAdapter接口 184
14.4 小结 185
14.5 复习题 185
14.6 练习题 186
第15章 JavaBean 187
15.1 理解JavaBean 188
15.2 开发简单的JavaBean 189
15.3 在Forte中部署 193
15.4 属性. 方法和事件 195
15.4.1 创建新方法 195
15.4.2 事件 195
15.4.3 PropertyChangeEvent 196
15.5 小结 198
15.6 复习题 199
15.7 练习题 199
第16章 Swing库 200
16.1 理解Swing 201
16.2 Swing应用程序结构 202
16.2.1 窗口管理 203
16.2.2 JFrame 204
16.2.3 JComponent 204
16.2.4 JPanel 204
16.2.5 使用JScrollPane控件 205
16.3 Dialog 206
16.4 使用Swing组件 207
16.4.1 JTextField组件 207
16.4.2 添加按钮 208
16.4.3 JTextArea 209
16.4.4 JCheckBox 211
16.4.5 JRadioButton 212
16.4.6 JList 212
16.5 小结 213
16.6 复习题 213
16.7 练习题 213
第17章 高级Swing 215
17.1 JTable编程 216
17.1.1 添加标题. 滚动条并格式化 218
17.1.2 JTree编程 219
17.2 使用JOptionPane 222
17.3 小结 223
17.4 复习题 223
17.5 答案 223
17.6 练习题 224
第四部分 高级主题
第18章 多线程编程 227
18.1 为什么需要多线程 228
18.2 使用Thread类控制线程 228
18.2.1 创建多线程应用程序 229
18.2.2 设置线程名称 230
18.3 使用Runnable接口创建线程 231
18.3.1 中断线程 232
18.3.2 结束线程 233
18.4 协调线程对变量的访问 234
18.5 线程之间的协调 236
18.6 在线程间发送数据 237
18.7 小结 239
18.8 复习题 239
18.9 练习题 239
第19章 使用Java数据库连接(JDBC)访问数据库 240
19.1 了解数据库的历史 241
19.2 理解为何需要JDBC 242
19.3 Java数据库连接编程 243
19.4 查询数据库 245
19.5 使用JDBC创建表 247
19.6 填充数据库 248
19.7 使用JDBC和GUI来改变数据 249
19.8 小结 251
19.9 复习题 251
19.10 练习题 251
第20章 网络编程 252
20.1 TCP/IP的历史 253
20.2 TCP/IP内幕 253
20.3 应用层 254
20.4 传输层 254
20.5 网络层 255
20.6 网络接口层 255
20.7 简单的套接字编程 256
20.8 使用套接字传输复杂对象 261
20.9 使用套接字传输流 264
20.10 URL类 265
20.11 小结 266
20.12 复习题 267
20.13 练习题 267
第五部分 Web技术
第21章 Servlet 271
21.1 servlet定义 272
21.2 为什么需要servlet 272
21.3 servlet的工作原理 273
21.4 建立Web环境 274
21.5 安装Jakarta Tomcat 274
21.5.1 启动Tomcat 275
21.5.2 测试安装 276
21.6 servlet编程 277
21.6.1 编写通用servlet 277
21.6.2 部署servlet 278
21.6.3 理解HTTP 281
21.6.4 GET命令 281
21.6.5 POST命令 282
21.6.6 其他命令 282
21.6.7 HTTP 1.1 282
21.6.8 HTTP编程 283
21.8 HTML表单和servlet 287
21.9 调用servlet的其他类 289
21.10 使用cookie维护状态 291
21.11 使用会话对象维护状态 293
21.12 小结 296
21.13 复习题 296
21.14 练习题 296
第22章 JavaServer 页面(JSP) 297
22.1 JSP是什么, 不是什么 298
22.2 JSP的优点 298
22.3 JSP如何工作 299
22.4 JSP编程 299
22.4.1 表达式 299
22.4.2 向JSP页面添加scriptlet 299
22.4.3 声明 300
22.4.4 添加注释 300
22.4.5 指令 300
22.4.6 隐式对象 300
22.5 部署和运行JSP 301
22.6 在JSP中定义方法 304
22.6.1 条件输出 305
22.6.2 从HTML表单调用JSP 306
22.6.3 错误处理 307
22.7 小结 307
22.8 复习题 308
22.9 练习题 308
第23章 基于组件的JavaServer页面 309
23.1 理解JSP操作 311
23.2 如何在JSP中包含其他JSP 312
23.3 include操作 312
23.4 从JSP访问JavaBean 315
23.5 使用JavaBean访问数据库 318
23.5.1 更新数据库 320
23.5.2 从数据库中检索数据 321
23.6 小结 323
23.7 复习题 323
23.8 练习题 323
第24章 自定义标记库 324
24.1 什么是自定义标记, 什么不是 325
24.2 自定义标记的工作方式 325
24.3 使用自定义标记体 329
24.4 使用自定义标记传递参数 330
24.5 小结 333
24.6 复习题 333
24.7 练习题 334
第25章 XML 335
25.1 XML的重要性 336
25.2 XML组件 337
25.2.1 XML文档 337
25.2.2 文档类型定义(DTD) 338
25.2.3 文档验证 338
25.2.4 分析技术 339
25.3 使用SAX分析程序读取XML文档 340
25.4 使用文档对象模型(DOM)操作XML文档 343
25.4.1 在内存中生成XML树 343
25.4.2 读取XML树 344
25.4.3 输出XML树 346
25.4.4 操作XML树 346
25.5 XSLT 348
25.5.1 XSL样式表 349
25.5.2 XSLT使用示例 350
25.6 使用JDOM操作XML文档 351
25.6.1 读取XML文档 351
25.6.2 JDOM示例 354
25.7 小结 355
25.8 复习题 355
25.9 练习题 356
第26章 Web 体系结构 357
26.1 组织Web站点 358
26.1.1 Web站点的TCP/IP层次 358
26.1.2 超文本传输协议(HTTP) 359
26.1.3 浏览器 359
26.1.4 Web服务器 360
26.1.5 应用层 360
26.2 Web设计中的缺陷 360
26.3 模型—视图—控制器(MVC)架构 361
26.4 servlet 362
26.5 JavaServer页面(JSP) 363
26.6 JavaScript 365
26.7 Enterprise JavaBean 365
26.8 Web Services 366
26.9 小结 368
26.10 复习题 368
附录
附录A 使用Borland JBuilder 371
A.1 下载JBuilder 372
A.2 安装JBuilder 372
A.3 运行JBuilder 372
A.4 使用IDE开发Java应用程序 374
A.4.1 在项目中创建类 374
A.4.2 调试Java应用程序 376
A.5 使用IDE开发JSP和Java Servlet 378
A.6 小结 381
附录B Sun One Studio 4(Forte)团队版 382
B.1 下载Sun One Studio 4 383
B.2 安装Sun One Studio 4 383
B.3 运行Sun One Studio 4 383
B.4 使用IDE开发Java应用程序 385
B.5 创建项目 385
B.5.1 在项目中创建类 385
B.5.2 调试Java应用程序 387
B.6 使用IDE开发JSP和Java Servlet 388
B.6.1 添加JSP页面 389
B.6.2 添加Servlet 391
B.7 小结 392
附录C 复习题解答 393
Java编程, 与所有计算机编程一样, 需要刻苦钻研的精神和合适的学习工具. 作为一名Java程序员, 我曾花费了数年的时间阅读了大量的Java图书, 这些图书涉及到Java的方方面面, 并分析了Sun对Java的实现来深入了解它的设计原理. 我所读过的Java编程书籍在细节和方法上差别很大, 但都遗漏了某些非常重要的东西.
几年前, 当我深入学习Windows编程时, 我研读了DonBox的Essential COM, 这本书改变了我对编程书的标准. COM是一个难以理解的主题, 更别说精通COM, 但Don的方法与市场上其他同类图书的方法大不相同. 他从基础知识入手, 并对COM的功能逐一演绎, 因此他的读者能够真正理解每一个设计决定的原因. 到读完第一章时, 我对COM的理解已经达到完全不同的境界:COM不再那么神秘, 一切都突然变得富有趣味. 在那以后, 当学习COM更高级的特性时, 只不过是在一个已打好的坚实地基上再添砖加瓦罢了.
我从未看到过有Java书采用这种方法, 这正是《Java 2 Primer Plus中文版》一书与其他图书的不同之处. 不是简单地教读者如何编写Java程序, 而是倾注全部的笔墨来告诉读者这门语言为什么是这样的. 该书还探索了Java创始者在创建该语言时所作出的底层设计决策. 因此, 本书的目标是帮助读者打下Java编程语言的坚实基础, 在此基础上通读全书, 就像新技术的发展一样, 读者可以在他坚实的基础上添枝加叶.
本书的读者对象
《Java 2 Primer Plus中文版》适合以下各类读者:
● 初学计算机编程的读者,
● 初学Java的程序员,
● 希望对Java获得更深理解的Java程序员.
本书从Java基础知识开始, 并假设读者对计算机编程一无所知. 本书为编程新手和经验丰富的专业人士都提供了足够深度的内容. 如果您已精通另一门编程语言, 那么在学习本书的前几章时您可以将注意力集中在几个应用程序示例上, 以便熟悉Java编程语言的关键概念. 如果您只是普通的计算机编程新手, 本书将指导您通晓基本的概念并解释这些概念的根源.
本书的编写工作不仅依靠我作为一名专业Java程序员的经验, 还从课堂中借用了久经试验的教学经验. 我曾教过各种程度的学生, 从计算机编程新手到Visual Basic专家, 从会计师到经验丰富的Java程序员, 并设计了一套Java编程方法, 这些方法用于特定的情况. 我的目标是将这些经验发布出来.
阅读本书的预备知识
您不需要任何编程背景, 也将会发现这本书是极有价值的学习助手.
本书的组织结构
本书分为5个部分:
● 第一部分:Java基础.
● 第二部分:面向对象编程.
● 第三部分:图形用户界面.
● 第四部分:高级主题.
● 第五部分:Web技术.
第一部分“Java基础”覆盖了适合Java编程的计算机编程基础知识. 该部分讲述了Java的关键字. 数据类型. 变量. 运算符. 流控制和方法. 在通读“Java基础”之后, 您将对本书后面构建Java程序时所需用到的主要工具有所了解.
第二部分“面向对象编程”介绍了迄今为止计算机编程领域中最流行. 最有效的编程范例——面向对象编程. 该部分讲述了Java类. 封装. 继承和多态. 此外, 该部分还包括了一些更高级的Java核心功能, 包括接口. 异常处理. Java集合类和输入与输出.
第三部分“图形用户界面”指导您如何使用标准抽象窗口工具为应用程序和小程序(applet)开发图形用户界面以及如何使用Swing来开发高级用户界面. 该部分带领您全面地探索驱动Java整个事件处理策略的事件委派模型.
第四部分“高级主题”汇总了被我称为Java编程语言核心组件的全部高级主题. 在学完该部分之后, 读者应该能够理解应用于Web. 企业计算或移动计算的任何Java应用程序. 讲述的主题包括多线程编程. Java自省和反射编程接口. Java数据库连接APl(JDBC). 使用原始协议的网络编程. Java远程方法调用(RMl). 该部分以对最佳实践和代码优化技术的讨论收尾.
第五部分“Web技术”讨论了在服务器端Web编程中采用Java语言编写的应用程序. 该部分从最基本的servlet开始讨论, 辅之以最新. 易于使用的JavaServer页面(JSP), 此外还讲述了诸如如何构建自定义标记库来强化Web编程和处理XML之类的高级技术. 最后, 该部分还包括了对何谓正确的Web应用程序设计的讨论, 并讨论了应用于Web设计中的. 久经考验的模型一视图一控制器(MVC)设计模式. 由于Java Web编程非常灵活, 因而很容易滥用Java技术而导致性能不佳, 该部分能够满足您的需要, 可以确保您的Web应用程序是可扩展的并且经过优化配置.
本书中使用的约定
本书中的程序清单均收录在随书光盘中, 在阅读本书时, 请读者参看光盘中的相应内容, 一并学习.
每章配有一组复习题和练习题. 目的是巩固Java编程语言的关键概念并鼓励您通过将所学知识应用到实际项目中来深化学习. 学习编程语言是项主动性练习, 无论想精通哪门编程语言, 都不能仅仅只阅读相关书籍, 而必须将所学的知识应用到实际的示例中. 我鼓励您做这些练习题, 做完之后, 您的能力将会大大提高!
本书中的其他内容包括:
注释
注释部分是对正在讨论的主题的注解和旁白, 或是对特定概念的完整解释.
提示
提示部分给出极好的捷径和提示, 以便更有效地进行Java2编程.
警告
警告部分警告您注意避免常见的错误.