Java面向对象编程
出版社
:
电子工业出版社
原作者
:
孙卫琴
价格: 65.80元
优惠价:
49.30
元
卓越网
内容简介
Java语言是目前非常流行的面向对象编程语言。本书结合大量典性的实例,详细介绍了Java面向对象的编程思想、编程语法和设计模式。本书的范例都基于最新的JDK1.5版本。本书内容包括:面向对象的编程思想、Java语言的基础知识、异常处理、类与对象的生命周期、多线程、Java集合、输入/输出和GUI编程等。
本书的最大特色是以六条主线贯穿全书:面向对象编程思想、Java语言的语法、Java虚拟机执行Java程序的原理、在实际项目中的运用、设计模式和性能优化技巧。书的每一章都会围绕若干条主线来展开内容,并且根据全书的布局,合理安排每一章内容的深度。
本书适用于所有Java编程人员。本书由浅入深组织内容,迎合Java初学者的需求,而且与实际应用紧密结合,介绍常见Java类库的用法,总结优化Java编程的各种宝贵经验,深入阐述Java虚拟机执行Java程序的原理,因此本书可作为资深Java开发人员的参考手册。本书还可以作为高校的Java教材,以及企业Java培训教材。另外,本书贯穿了Sun公司的SCJP(Sun Certified Java Programmer)认证的考试要点,因此可作为Sun公司的SCJP认证的辅导教材。
撰写本书,目的是为了帮助读者看清Java万花筒的本质,从复杂的表象中寻找普遍的的规律,深刻理解Java的核心思想,只有掌握了普遍的规律与和核心思想,才能以不变应万变,轻轻松松的把握Java技术发展的新趋势,迅速的领略并且会熟练运用一门新的技术,而不成为被动的追随者,知其然而不知其所以然。
阅读本书,读者对Java的领悟将逐步达到以下境界:
(1)熟悉Java语法,熟练的编译和调试程序。
(2)按照面向对象的思想来快速理解JDK类库以及其他第三方提供的类库,通过阅读JavaDoc和相关文档,知道如何正确的使用这些类库。
(3)按照面向对象的思想来分析问题领域,设计对象模型。
(4)在开发过程中会运用现有的一些优秀设计模式,提高开发效率。
(5)当一个方法有多种实现方式时,能够从可维护、可重用以及性能优化的角度选择最佳的实现方式。
(6)理解Java虚拟机执行Java程序的原理,从而更深入的理解Java语言的各种特性和语法规则。
目录
第1章 面向对象开发方法概述 1 1.1 结构化的软件开发方法简介 3 1.2 面向对象的软件开发方法简介 5 1.2.1 对象模型 6 1.2.2 <a href="javascript:;" onClick="javascript:tagshow(event, 'UML');" target="_self"><u><strong>UML</strong></u></a>:可视化建模语言 6 1.2.3 Rational Rose:可视化建模工具 7 1.3 面向对象开发中的核心思想和概念 7 1.3.1 问题领域、对象、属性、状态、行为、方法、实现 7 1.3.2 类、类型 9 1.3.3 消息、服务 10 1.3.4 接口 11 1.3.5 封装、透明 12 1.3.6 抽象 16 1.3.7 继承、扩展、覆盖 17 1.3.8 组合 19 1.3.9 多态、动态绑定 22 1.4 UML语言简介 24 1.4.1 用例图 24 1.4.2 类框图 25 1.4.3 时序图 26 1.4.4 协作图 27 1.4.5 状态转换图 27 1.4.6 组件图 28 1.4.7 部署图 29 1.5 类之间的关系 29 1.5.1 关联(Association) 29 1.5.2 依赖(Dependency) 31 1.5.3 聚集(Aggregation) 31 1.5.4 泛化(Generalization) 32 1.5.5 实现(Realization) 32 1.5.6 区分依赖、关联和聚集关系 33 1.6 实现Panel系统 35 1.6.1 扩展Panel系统 37 1.6.2 用配置文件进一步提高Panel系统的可维护性 39 1.6.3 运行Panel系统 40 1.7 小结 41 1.8 思考题 42 第2章 第一个Java应用 43 2.1 创建Java源文件 43 2.1.1 Java源文件结构 44 2.1.2 包声明语句 45 2.1.3 包引入语句 47 2.1.4 方法的声明 49 2.1.5 程序入口main()方法的声明 50 2.1.6 给main()方法传递参数 51 2.1.7 注释语句 51 2.1.8 关键字 51 2.1.9 标识符 52 2.1.10 编程规范 52 2.2 用JDK管理Java应用 53 2.2.1 JDK简介 54 2.2.2 编译Java源文件 55 2.2.3 运行Java程序 56 2.2.4 给Java应用打包 59 2.3 JavaDoc文档 60 2.3.1 JavaDoc标记 62 2.3.2 javadoc命令的用法 67 2.4 Java虚拟机的运行时数据区 69 2.5 小结 71 2.6 思考题 71 第3章 数据类型和变量 73 3.1 基本数据类型 74 3.1.1 boolean类型 74 3.1.2 byte、short、int和long类型 75 3.1.3 char类型与字符编码 76 3.1.4 float和double类型 79 3.2 引用类型 83 3.2.1 基本类型与引用类型的区别 84 3.2.2 用new关键字创建对象 85 3.3 变量的作用域 87 3.3.1 静态变量和实例变量的生命周期 88 3.3.2 局部变量的生命周期 91 3.3.3 成员变量和局部变量同名 92 3.3.4 将局部变量的作用域最小化 93 3.4 对象的默认引用:this 94 3.5 参数传递 96 3.6 变量的初始化及默认值 98 3.6.1 成员变量的初始化 98 3.6.2 局部变量的初始化 99 3.7 直接数 100 3.7.1 直接数的类型 100 3.7.2 直接数的赋值 101 3.8 小结 103 3.9 思考题 104 第4章 操作符 107 4.1 操作符简介 107 4.2 整型操作符 108 4.2.1 一元整型操作符 109 4.2.2 二元整型操作符 110 4.3 浮点型操作符 115 4.4 比较操作符和逻辑操作符 116 4.5 三元操作符"?:" 119 4.6 字符串连接操作符"+" 119 4.7 操作符"=="与对象的equals()方法 121 4.7.1 操作符"==" 121 4.7.2 对象的equals()方法 122 4.8 instanceof 操作符 125 4.9 变量的赋值和类型转换 127 4.9.1 基本数据类型转换 128 4.9.2 引用类型的类型转换 131 4.10 小结 131 4.11 思考题 134 第5章 流程控制 137 5.1 分支语句 138 5.1.1 if...else语句 138 5.1.2 switch语句 141 5.2 循环语句 144 5.2.1 while语句 145 5.2.2 do…while语句 146 5.2.3 for语句 147 5.2.4 多重循环 150 5.3 流程跳转语句 151 5.4 综合例子:八皇后问题 153 5.5 小结 156 5.6 思考题 157 第6章 继承 161 6.1 继承的基本语法 161 6.2 方法重载(Overload) 163 6.3 方法覆盖(Override) 165 6.4 方法覆盖与方法重载的异同 170 6.5 super关键字 171 6.6 多态 172 6.7 继承的利弊和使用原则 177 6.7.1 继承树的层次不可太多 177 6.7.2 继承树的上层为抽象层 177 6.7.3 继承关系最大的弱点:打破封装 178 6.7.4 精心设计专门用于被继承的类 180 6.7.5 区分对象的属性与继承 181 6.8 比较组合与继承 183 6.8.1 组合关系的分解过程对应继承关系的抽象过程 184 6.8.2 组合关系的组合过程对应继承关系的扩展过程 186 6.9 小结 189 6.10 思考题 190 第7章 Java语言中的修饰符 195 7.1 访问控制修饰符 196 7.2 abstract修饰符 198 7.3 final修饰符 200 7.3.1 final类 201 7.3.2 final方法 201 7.3.3 final变量 202 7.4 static修饰符 206 7.4.1 static变量 206 7.4.2 static方法 209 7.4.3 static代码块 212 7.5 小结 214 7.6 思考题 215 第8章 接口 219 8.1 接口的概念和基本特征 220 8.2 比较抽象类与接口 222 8.3 与接口相关的设计模式 227 8.3.1 定制服务模式 227 8.3.2 适配器模式 231 8.3.3 默认适配器模式 235 8.3.4 代理模式 236 8.3.5 标识类型模式 241 8.3.6 常量接口模式 242 8.4 小结 243 8.5 思考题 244 第9章 异常处理 247 9.1 Java异常处理机制概述 248 9.1.1 Java异常处理机制的优点 248 9.1.2 Java虚拟机的方法调用栈 250 9.1.3 异常处理对性能的影响 253 9.2 运用Java异常处理机制 253 9.2.1 try…catch语句:捕获异常 253 9.2.2 finally语句:任何情况下都必须执行的代码 254 9.2.3 throws子句:声明可能会出现的异常 256 9.2.4 throw语句:抛出异常 256 9.2.5 异常处理语句的语法规则 257 9.2.6 异常流程的运行过程 260 9.3 Java异常类 264 9.3.1 运行时异常 266 9.3.2 受检查异常 266 9.3.3 区分运行时异常和受检查异常 267 9.3.4 区分运行时异常和错误 268 9.4 <a href="javascript:;" onClick="javascript:tagshow(event, '%D3%C3%BB%A7');" target="_self"><u><strong>用户</strong></u></a>定义异常 268 9.4.1 异常转译和异常链 269 9.4.2 处理多样化异常 271 9.5 异常处理原则 273 9.5.1 异常只能用于非正常情况 273 9.5.2 为异常提供说明文档 274 9.5.3 尽可能地避免异常 275 9.5.4 保持异常的原子性 276 9.5.5 避免过于庞大的try代码块 277 9.5.6 在catch子句中指定具体的异常类型 277 9.5.7 不要在catch代码块中忽略被捕获的异常 278 9.6 小结 278 9.7 思考题 279 第10章 类的生命周期 283 10.1 Java虚拟机及程序的生命周期 283 10.2 类的加载、连接和初始化 283 10.2.1 类的加载 284 10.2.2 类的验证 285 10.2.3 类的准备 285 10.2.4 类的解析 286 10.2.5 类的初始化 286 10.2.6 类的初始化的时机 288 10.3 类加载器 292 10.3.1 类加载的父亲委托(Parent Delegation)机制 294 10.3.2 创建用户自定义的类加载器 295 10.3.3 URLClassLoader类 301 10.4 类的卸载 302 10.5 小结 303 10.6 思考题 304 第11章 对象的生命周期 305 11.1 创建对象的方式 305 11.2 构造方法 308 11.2.1 重载构造方法 309 11.2.2 默认构造方法 310 11.2.3 子类调用父类的构造方法 311 11.2.4 构造方法的作用域 314 11.2.5 构造方法的访问级别 315 11.3 静态工厂方法 316 11.3.1 单例(singleton)类 317 11.3.2 枚举类 319 11.3.3 不可变(immutable)类与可变类 321 11.3.4 具有实例缓存的不可变类 325 11.3.5 松耦合的系统接口 327 11.4 垃圾回收 328 11.4.1 对象的可触及性 329 11.4.2 垃圾回收的时间 330 11.4.3 对象的finalize()方法简介 331 11.4.4 对象的finalize()方法的特点 331 11.4.5 比较finalize()方法和finally代码块 334 11.5 清除过期的对象引用 334 11.6 对象的强、软、弱和虚引用 336 11.7 小结 342 11.8 思考题 342 第12章 内部类 347 12.1 内部类的基本语法 347 12.1.1 实例内部类 348 12.1.2 静态内部类 351 12.1.3 局部内部类 353 12.2 内部类的继承 354 12.3 子类与父类中的内部类同名 355 12.4 匿名类 356 12.5 内部接口及接口中的内部类 359 12.6 内部类的用途 360 12.6.1 封装类型 360 12.6.2 直接访问外部类的成员 360 12.6.3 回调(CallBack) 361 12.7 内部类的类文件 363 12.8 小结 363 12.9 思考题 364 第13章 多线程 367 13.1 Java线程的运行机制 367 13.2 线程的创建和启动 369 13.2.1 扩展java.lang.Thread类 369 13.2.2 实现Runnable接口 374 13.3 线程的状态转换 375 13.3.1 新建状态(New) 375 13.3.2 就绪状态(Runnable) 376 13.3.3 运行状态(Running) 376 13.3.4 阻塞状态(Blocked ) 376 13.3.5 死亡状态(Dead) 377 13.4 线程调度 378 13.4.1 调整各个线程的优先级 379 13.4.2 线程睡眠:Thread.sleep()方法 381 13.4.3 线程让步:Thead.yield()方法 382 13.4.4 等待其他线程结束:join() 383 13.5 获得当前线程对象的引用 384 13.6 后台线程 385 13.7 定时器Timer 386 13.8 线程的同步 388 13.8.1 同步代码块 391 13.8.2 线程同步的特征 394 13.8.3 同步与并发 397 13.8.4 线程安全的类 398 13.8.5 释放对象的锁 399 13.8.6 死锁 400 13.9 线程通信 402 13.10 中断阻塞 406 13.11 线程控制 407 13.11.1 被废弃的suspend()和resume()方法 408 13.11.2 被废弃的stop()方法 409 13.11.3 以编程的方式控制线程 409 13.12 线程组 411 13.13 处理线程未捕获的异常 412 13.14 ThreadLocal类 414 13.15 小结 416 13.16 思考题 417 第14章 数组 419 14.1 数组变量的声明 419 14.2 创建数组对象 420 14.3 访问数组的元素和长度 421 14.4 数组的初始化 422 14.5 多维数组 423 14.6 调用数组对象的方法 424 14.7 把数组作为方法参数或返回值 425 14.8 数组排序 427 14.9 数组的二叉查找算法 428 14.10 哈希表 430 14.11 数组实用类:Arrays 434 14.12 小结 436 14.13 思考题 437 第15章 Java集合 439 15.1 Collection和Iterator接口 440 15.2 Set(集) 442 15.2.1 Set的一般用法 443 15.2.2 HashSet类 444 15.2.3 TreeSet类 446 15.3 List(列表) 450 15.3.1 访问列表的元素 450 15.3.2 为列表排序 451 15.3.3 ListIterator接口 451 15.3.4 获得固定长度的List对象 452 15.3.5 比较Java数组和各种List的性能 453 15.4 Map(映射) 455 15.5 HashSet和HashMap的负载因子 457 15.6 集合的编译时类型检查 458 15.7 用for循环遍历集合 461 15.8 集合实用类:Collections 461 15.9 历史集合类 464 15.10 小结 467 15.11 思考题 468 第16章 Java I/O系统 469 16.1 输入流和输出流概述 469 16.2 输入流 471 16.2.1 字节数组输入流:ByteArrayInputStream类 472 16.2.2 文件输入流:FileInputStream类 473 16.2.3 字符串输入流:StringBufferInputStream类 474 16.2.4 管道输入流:PipedInputStream类 475 16.2.5 顺序输入流:SequenceInputStream类 476 16.3 过滤输入流:FilterInputStream 476 16.3.1 装饰器设计模式 477 16.3.2 过滤输入流的种类 478 16.3.3 DataInputStream类 479 16.3.4 LineNumberInputStream类 480 16.3.5 BufferedInputStream类 480 16.3.6 PushbackInputStream类 481 16.4 输出流 481 16.4.1 字节数组输出流:ByteArrayOutputStream类 481 16.4.2 文件输出流:FileOutputStream类 483 16.5 过滤输出流:FilterOutputStream类 483 16.5.1 DataOutputStream类 484 16.5.2 BufferedOutputStream类 484 16.5.3 PrintStream类 485 16.6 Reader/Writer概述 487 16.7 Reader类 489 16.7.1 字符数组输入流:CharArrayReader类 490 16.7.2 字符串输入流:StringReader类 491 16.7.3 InputStreamReader类 491 16.7.4 FileReader类 492 16.7.5 BufferedReader类 492 16.8 Writer类 493 16.8.1 字符数组输出流:CharArrayWriter类 493 16.8.2 OutputStreamWriter类 494 16.8.3 FileWriter类 496 16.8.4 BufferedWriter类 496 16.8.5 PrintWriter类 497 16.9 标准I/O 498 16.9.1 重新包装标准输入和输出 498 16.9.2 标准I/O重定向 499 16.10 随机访问文件类:RandomAccessFile 500 16.11 新I/O类库 501 16.11.1 缓冲器Buffer概述 502 16.11.2 通道Channel概述 503 16.11.3 字符编码Charset类概述 504 16.11.4 用FileChannel读写文件 505 16.11.5 控制缓冲区 506 16.11.6 字符编码转换 507 16.11.7 缓冲区视图 508 16.11.8 文件映射缓冲区:MappedByteBuffer 509 16.11.9 文件加锁 510 16.12 对象的序列化与反序列化 513 16.13 File类 518 16.13.1 查看、创建和删除文件或目录 520 16.13.2 文件过滤器 522 16.14 小结 523 16.15 思考题 524 第17章 图形用户界面 527 17.1 AWT容器 527 17.2 布局管理器 529 17.2.1 FlowLayout流式布局管理器 530 17.2.2 BorderLayout边界布局管理器 532 17.2.3 GridLayout网格布局管理器 534 17.2.4 CardLayout卡片布局管理器 537 17.2.5 GridBagLayout网格包布局管理器 539 17.3 事件处理 543 17.3.1 事件处理的软件实现 544 17.3.2 事件源﹑事件和监听器的类层次和关系 549 17.4 AWT绘图 554 17.5 Graphics类 556 17.6 小结 558 17.7 思考题 558 第18章 <a href="javascript:;" onClick="javascript:tagshow(event, 'Swing');" target="_self"><u><strong>Swing</strong></u></a>组件 561 18.1 Swing组件的基本用法 562 18.2 边框 563 18.3 按钮组件 565 18.4 文本框 568 18.5 文本区域与滚动面板 570 18.6 复选框与单选按钮 572 18.7 下拉列表 574 18.8 列表框 575 18.9 页签面板 577 18.10 菜单 578 18.11 对话框 583 18.12 文件对话框 585 18.13 消息框 588 18.14 绘图 589 18.15 JApplet 592 18.16 在JApplet中播放声音 598 18.17 BoxLayout布局管理器 600 18.18 设置Swing界面的外观和感觉 603 18.19 小结 605 18.20 思考题 606 第19章 Java常用类 607 19.1 Object 类 607 19.2 String类和StringBuffer类 608 19.2.1 String类 608 19.2.2 "hello"与new String("hello")的区别 611 19.2.3 StringBuffer类 612 19.2.4 比较String类与StringBuffer类 613 19.2.5 正则表达式 615 19.3 包装类 616 19.3.1 包装类的构造方法 617 19.3.2 包装类的常用方法 618 19.3.3 包装类的特点 619 19.4 Math类 620 19.5 Random类 621 19.6 处理日期的类 621 19.6.1 Date类 622 19.6.2 DateFormat类 622 19.6.3 Calendar类 624 19.7 BigDecimal类 625 19.8 小结 629 19.9 思考题 629
面向对象编程思想;Java语言的语法;Java虚拟机执行Java程序的原理;在实际项目中的运用;设计模式;性能优化技巧。
看清Java万花筒的本质,从复杂的表象中寻找普遍的规律,深刻理解Java的核心思想。
紧密结合实际,运用典型实例,循序渐进,行动详细讲解Java面向对象的编程思想、编程语法和设计模式。
总结优化Java编程的各种宝贵经验,深入阐述Java虚拟机执行Java程序的原理,从而使你更深入地理解Java语言的各种特性和语法规则。
本书贯穿了Sun公司的SCJP(Sun Certified Java Programmer)认证的考试要点,可作为Sun公司的SCJP认证的辅导教材。
网页制作:李康生 您是此页第118位读者