| 作者 |
| 丛书名 |
| 出版社 |
| 原 Prentice Hall/Pearson |
| ISBN |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 本书指导读者利用Java语言进行面向对象的程序设计,详细介绍了Java的基本语法及它的高级特性(网络编程、高级面向对象能力、多线程),系统地讲述了Java的高级理论,形象地阐述了面向对象基本理论。书中包括320个有用的Java程序,15 000余行代码,这些短小精悍的程序示例有助于读者理解含义模糊的概念。 本书适用于进行万维网编程和网页设计的程序员和计算机爱好者,也可作为大专院校相关专业的教学参考书。 |
| 目录 |
| 目 录 前言 第1章 对象入门 1 1.1 抽象的进步 1 1.2 对象的接口 2 1.3 实现方案的隐藏 3 1.4 方案的重复使用 4 1.5 继承:重新使用接口 5 1.5.1 改善基础类 5 1.5.2 等价与类似关系 6 1.6 多形对象的互换使用 6 1.6.1 动态绑定 7 1.6.2 抽象的基础类和接口 8 1.7 对象的创建和存在时间 8 1.7.1 集合与继承器 9 1.7.2 单根结构 10 1.7.3 集合库与方便使用集合 11 1.7.4 清除时的困境:由谁负责清除? 12 1.8 违例控制:解决错误 13 1.9 多线程 13 1.10 永久性 14 1.11 Java和因特网 14 1.11.1 什么是Web 14 1.11.2 客户端编程 16 1.11.3 服务器端编程 19 1.11.4 一个独立的领域:应用程序 20 1.12 分析和设计 20 1.12.1 不要迷失 20 1.12.2 阶段0:拟出一个计划 21 1.12.3 阶段1:要制作什么 21 1.12.4 阶段2:如何构建 22 1.12.5 阶段3:开始创建 23 1.12.6 阶段4:校订 23 1.12.7 计划的回报 24 1.13 Java还是C++ 24 第2章 一切都是对象 26 2.1 用句柄操纵对象 26 2.2 所有对象都必须创建 26 2.2.1 保存到什么地方 27 2.2.2 特殊情况:主要类型 27 2.2.3 Java的数组 28 2.3 绝对不要清除对象 29 2.3.1 作用域 29 2.3.2 对象的作用域 30 2.4 新建数据类型:类 30 2.5 方法、自变量和返回值 32 2.6 构建Java程序 33 2.6.1 名字的可见性 33 2.6.2 使用其他组件 33 2.6.3 static关键字 34 2.7 我们的第一个Java程序 35 2.8 注释和嵌入文档 37 2.8.1 注释文档 38 2.8.2 具体语法 38 2.8.3 嵌入HTML 39 2.8.4 @see:引用其他类 39 2.8.5 类文档标记 39 2.8.6 变量文档标记 40 2.8.7 方法文档标记 40 2.8.8 文档示例 40 2.9 编码样式 41 2.10 总结 42 2.11 练习 42 第3章 控制程序流程 43 3.1 使用Java运算符 43 3.1.1 优先级 43 3.1.2 赋值 43 3.1.3 算术运算符 45 3.1.4 自动递增和递减 47 3.1.5 关系运算符 48 3.1.6 逻辑运算符 49 3.1.7 按位运算符 51 3.1.8 移位运算符 51 3.1.9 三元if-else运算符 54 3.1.10 逗号运算符 55 3.1.11 字串运算符+ 55 3.1.12 运算符常规操作规则 55 3.1.13 造型运算符 56 3.1.14 Java没有“sizeof” 58 3.1.15 复习计算顺序 58 3.1.16 运算符总结 58 3.2 执行控制 65 3.2.1 真和假 66 3.2.2 if-else 66 3.2.3 反复 67 3.2.4 do-while 67 3.2.5 for 67 3.2.6 中断和继续 69 3.2.7 开关 73 3.3 总结 75 3.4 练习 76 第4章 初始化和清除 77 4.1 用构建器自动初始化 77 4.2 方法过载 78 4.2.1 区分过载方法 80 4.2.2 主类型的过载 80 4.2.3 返回值过载 83 4.2.4 默认构建器 83 4.2.5 this关键字 84 4.3 清除:收尾和垃圾收集 87 4.3.1 finalize()用途何在 87 4.3.2 必须执行清除 88 4.4 成员初始化 90 4.4.1 规定初始化 92 4.4.2 构建器初始化 93 4.5 数组初始化 97 4.6 总结 103 4.7 练习 103 第5章 隐藏实施过程 104 5.1 包:库单元 104 5.1.1 创建独一无二的包名 106 5.1.2 自定义工具库 108 5.1.3 利用导入改变行为 110 5.1.4 包的停用 111 5.2 Java访问指示符 112 5.2.1 “友好的” 112 5.2.2 public:接口访问 113 5.2.3 private:不能接触 114 5.2.4 protected:“友好的一种” 115 5.3 接口与实现 116 5.4 类访问 117 5.5 总结 119 5.6 练习 119 第6章 类再生 121 6.1 合成的语法 121 6.2 继承的语法 123 6.3 合成与继承的结合 127 6.3.1 确保正确的清除 128 6.3.2 名字的隐藏 130 6.4 到底选择合成还是继承 131 6.5 protected 132 6.6 累积开发 132 6.7 上溯造型 133 6.8 final关键字 134 6.8.1 final数据 134 6.8.2 final方法 137 6.8.3 final类 138 6.8.4 final的注意事项 138 6.9 初始化和类装载 139 6.10 总结 140 6.11 练习 141 第7章 多形性 142 7.1 上溯造型 142 7.2 深入理解 144 7.2.1 方法调用的绑定 145 7.2.2 产生正确的行为 145 7.2.3 扩展性 147 7.3 覆盖与过载 149 7.4 抽象类和方法 150 7.5 接口 153 7.5.1 Java的“多重继承” 155 7.5.2 通过继承扩展接口 157 7.5.3 常数分组 158 7.5.4 初始化接口中的字段 159 7.6 内部类 159 7.6.1 内部类和上溯造型 161 7.6.2 方法和作用域中的内部类 162 7.6.3 链接到外部类 166 7.6.4 static内部类 168 7.6.5 引用外部类对象 169 7.6.6 从内部类继承 170 7.6.7 内部类可以覆盖吗? 171 7.6.8 内部类标识符 172 7.6.9 为什么要用内部类:控制框架 173 7.7 构建器和多形性 178 7.7.1 构建器的调用顺序 178 7.7.2 继承和finalize() 180 7.7.3 构建器内部的多形性方法的行为 182 7.8 通过继承进行设计 184 7.8.1 纯继承与扩展 185 7.8.2 下溯造型与运行期类型标识 186 7.9 总结 187 7.10 练习 188 第8章 对象的容纳 189 8.1 数组 189 8.1.1 数组和第一类对象 190 8.1.2 数组的返回 191 8.2 集合 192 8.3 枚举器(反复器) 197 8.4 集合的类型 200 8.4.1 Vector 200 8.4.2 BitSet 201 8.4.3 Stack 202 8.4.4 Hashtable 203 8.4.5 再论枚举器 208 8.5 排序 208 8.6 通用集合库 212 8.7 新集合 213 8.7.1 使用Collections 215 8.7.2 使用Lists 218 8.7.3 使用Sets 221 8.7.4 使用Maps 222 8.7.5 决定实施方案 224 8.7.6 未支持的操作 230 8.7.7 排序和搜索 232 8.7.8 实用工具 236 8.8 总结 238 8.9 练习 238 第9章 违例差错控制 240 9.1 基本违例 240 9.2 违例的捕获 242 9.2.1 try块 242 9.2.2 违例控制器 242 9.2.3 违例规范 243 9.2.4 捕获所有违例 244 9.2.5 重新“掷”出违例 245 9.3 标准Java违例 247 9.4 创建自己的违例 249 9.5 违例的限制 251 9.6 用finally清除 253 9.6.1 用finally做什么? 254 9.6.2 缺点:丢失的违例 256 9.7 构建器 257 9.8 违例匹配 260 9.9 总结 261 9.10 练习 261 第10章 Java IO系统 262 10.1 输入和输出 262 10.1.1 InputStream的类型 262 10.1.2 OutputStream的类型 263 10.2 增添属性和有用的接口 264 10.2.1 通过FilterInputStream从InputStream 里读入数据 264 10.2.2 通过FilterOutputStream向Output Strea-m里写入数据 265 10.3 本身的缺陷:RandomAccessFile 265 10.4 File类 266 10.4.1 列表器 266 10.4.2 检查与创建 270 10.5 IO流的典型应用 271 10.5.1 输入流 273 10.5.2 输出流 275 10.5.3 快捷文件处理 276 10.5.4 从标准输入中读取数据 277 10.5.5 管道数据流 278 10.6 StreamTokenizer 278 10.7 Java 1.1的IO流 282 10.7.1 数据的发起与接收 283 10.7.2 修改数据流的行为 283 10.7.3 未改变的类 284 10.7.4 一个例子 284 10.7.5 重导向标准IO 287 10.8 压缩 288 10.8.1 用GZIP进行简单压缩 289 10.8.2 用Zip进行多文件保存 290 10.8.3 Java归档(jar)实用程序 291 10.9 对象序列化 293 10.9.1 寻找类 296 10.9.2 序列化的控制 297 10.9.3 利用“持久性” 303 10.10 总结 308 10.11 练习 309 第11章 运行期类型鉴定 310 11.1 对RTTI的需要 310 11.1.1 Class对象 312 11.1.2 造型前的检查 314 11.2 RTTI语法 318 11.3 反射:运行期类信息 320 11.4 总结 324 11.5 练习 325 第12章 传递和返回对象 326 12.1 传递句柄 326 12.2 制作本地副本 328 12.2.1 按值传递 328 12.2.2 克隆对象 329 12.2.3 使类具有克隆能力 330 12.2.4 成功的克隆 331 12.2.5 Object.clone()的效果 333 12.2.6 克隆合成对象 334 12.2.7 用Vector进行深层复制 336 12.2.8 通过序列化进行深层复制 337 12.2.9 使克隆具有更大的深度 339 12.2.10 为什么有这个奇怪的设计 339 12.3 克隆的控制 340 12.4 只读类 346 12.4.1 创建只读类 347 12.4.2 “一成不变”的弊端 348 12.4.3 不变字串 350 12.4.4 String和StringBuffer类 351 12.4.5 字串的特殊性 353 12.5 总结 353 12.6 练习 354 第13章 创建窗口和程序片 355 13.1 为何要用AWT? 356 13.2 基本程序片 356 13.2.1 程序片的测试 358 13.2.2 一个更图形化的例子 359 13.2.3 框架方法的演示 359 13.3 制作按钮 360 13.4 捕获事件 360 13.5 文本字段 362 13.6 文本区域 363 13.7 标签 364 13.8 复选框 365 13.9 单选钮 366 13.10 下拉列表 367 13.11 列表框 368 13.12 布局的控制 371 13.12.1 FlowLayout 371 13.12.2 BorderLayout 371 13.12.3 GridLayout 372 13.12.4 CardLayout 372 13.12.5 GridBagLayout 374 13.13 action的替代品 374 13.14 程序片的局限 378 13.15 视窗化应用 379 13.15.1 菜单 380 13.15.2 对话框 382 13.16 新型AWT 386 13.16.1 新的事件模型 387 13.16.2 事件和接收者类型 388 13.16.3 用Java 1.1 AWT制作窗口和 程序片 392 13.16.4 再研究一下以前的例子 394 13.16.5 动态绑定事件 408 13.16.6 将事务逻辑与UI逻辑区分开 409 13.16.7 推荐编码方法 411 13.17 Java 1.1用户接口API 423 13.17.1 桌面颜色 423 13.17.2 打印 423 13.17.3 剪贴板 428 13.18 可视编程和Beans 430 13.18.1 什么是Bean? 431 13.18.2 用Introspector提取BeanInfo 433 13.18.3 一个更复杂的Bean 437 13.18.4 Bean的封装 439 13.18.5 更复杂的Bean支持 440 13.18.6 Bean更多的知识 441 13.19 Swing入门 441 13.19.1 Swing有哪些优点 442 13.19.2 方便的转换 442 13.19.3 功能框架 443 13.19.4 功能提示 444 13.19.5 边框 444 13.19.6 按钮 445 13.19.7 按钮组 446 13.19.8 图标 447 13.19.9 菜单 449 13.19.10 弹出式菜单 452 13.19.11 列表框和组合框 453 13.19.12 滑块和进程条 453 13.19.13 树 454 13.19.14 表格 456 13.19.15 卡片式对话框 457 13.19.16 Swing消息框 459 13.19.17 Swing更多的知识 459 13.20 总结 460 13.21 练习 460 第14章 多线程 461 14.1 反应灵敏的用户界面 461 14.1.1 从线程继承 463 14.1.2 针对用户界面的多线程 464 14.1.3 用主类合并线程 467 14.1.4 制作多个线程 469 14.1.5 Daemon线程 471 14.2 共享有限的资源 473 14.2.1 资源访问的错误方法 473 14.2.2 Java如何共享资源 476 14.2.3 回顾Java Beans 480 14.3 堵塞 483 14.3.1 为何会堵塞 483 14.3.2 死锁 491 14.4 优先级 494 14.5 回顾runnable 502 14.6 总结 506 14.7 练习 507 第15章 网络编程 509 15.1 机器的标识 509 15.1.1 服务器和客户机 510 15.1.2 端口:机器内独一无二的场所 511 15.2 套接字 511 15.3 服务多个客户 516 15.4 数据报 519 15.5 一个Web应用 524 15.5.1 服务器应用 525 15.5.2 NameSender程序片 529 15.5.3 要注意的问题 532 15.6 Java与CGI的沟通 533 15.6.1 CGI数据的编码 533 15.6.2 程序片 535 15.6.3 用C++写的CGI程序 538 15.6.4 POST的概念 545 15.7 用JDBC连接数据库 548 15.7.1 让示例运行起来 550 15.7.2 查找程序的GUI版本 553 15.7.3 JDBC API为何如此复杂 554 15.8 远程方法 555 15.8.1 远程接口概念 555 15.8.2 远程接口的实施 556 15.8.3 创建根与干 558 15.8.4 使用远程对象 558 15.8.5 RMI的替选方案 559 15.9 总结 559 15.10 练习 560 第16章 设计范式 561 16.1 范式的概念 561 16.1.1 单子 562 16.1.2 范式分类 563 16.2 观察器范式 563 16.3 模拟垃圾回收站 566 16.4 改进设计 568 16.4.1 “制作更多的对象” 568 16.4.2 用于原型创建的一个范式 570 16.5 抽象的应用 577 16.6 多重派遣 580 16.7 访问器范式 585 16.8 RTTI真的有害吗? 590 16.9 总结 592 16.10 练习 593 第17章 项目 594 17.1 文字处理 594 17.1.1 提取代码列表 594 17.1.2 检查大小写样式 605 17.2 方法查找工具 611 17.3 复杂性理论 614 17.4 总结 620 17.5 练习 620 附录A 使用非Java代码 621 附录B C++和Java的对比 647 附录C Java编程规则 654 附录D 性能 657 附录E 关于垃圾收集的一些话 663 |