Java程序设计:从方法学角度描述
作者 : 化志章 揭安全 钟林辉 编著
出版日期 : 2011-11-23
ISBN : 978-7-111-34087-4
适用人群 : 高等院校计算机及相关专业本科生
定价 : 33.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 258
开本 : 16
原书名 :
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

本书是从方法学角度阐述Java语言的第一本教材,旨在让学生既要“知其然”,更要“知其所以然”。方法学思想不仅可以引导学习过程,更能培养一种良好的学习方式。借助方法学这一视角,用一种更符合自然逻辑的方式引导知识地学习,对所学知识快速建立起逻辑合理的脉络框架。由大入小,由小入微。让学生不仅“知其然”,更要“知其所以然”。纷杂的语法、规则仅仅是上述方法学思想的逻辑诠释。
本书内容大致可分成三部分:第一部分(1-3章)介绍程序设计语言的基本要素和开发方法;第二部分(4-5章)介绍Java语言如何支持面向对象;第三部分(6-11章)阐述Java的特色机制,包括:多线程、异常处理和断言、GUI编程基础和Applet、I/O流、网络通信、泛型机制等。
本书可作为计算机专业及相关专业本科生的教学用书,和研究生的参考用书,也可供软件工程师及读者自学参考。由于本书蕴含了对计算机知识的学习和思考的独特方法,因此对希望学习了解软件开发的各类人员也有一定的参考价值。

图书特色

Java程序设计
从方法学角度描述
化志章 揭安全 钟林辉 编著
黄明和 李云清 杨庆红 审校

程序设计语言是计算机科学的重要组成部分。掌握正确的程序设计语言学习方法可以达到举一反三、事半功倍的效果。但是,学习程序设计语言的人常常会有一些困惑,包括:对具体的语言机制,学习时不知其要解决何种问题、怎样解决,造成仅关注语法或内容的细节,缺乏宏观上的掌控;对具体语法,则单纯记忆相关规则,未能思考引入相关规则的深层缘由。这样做带来的后果是只记住了语法规则,不知如何应用,更难从本质上掌握。从方法学角度来学习程序设计语言则能有效解决上述问题。

本书特点
本书从方法学角度展开论述,力求从概念提出者、概念设计者、概念使用者三个角度介绍各个知识点。引导读者从不同层面思考问题,同时有利于学习新语言时触类旁通。
在各章章首安排了“方法学导引”部分,用浅显易懂的语言,让读者迅速从宏观上掌握各章内容;对具体知识点,也注重从相关内容的语义和应用背景着手,引入相关分析,帮助读者推导出相关规则,而非单纯记忆规则。读者不仅能“知其然,同时知其所以然”,更能掌握一种新的学习和思维方式,以锤炼独立自主的创新能力。
注重理论与实践的结合。本书不仅以方法学的思维介绍了Java的中重要概念、理论,而且给出了大量典型的案例。深入理解这些案例,并结合书后的实验进行练习,能牢固掌握知识点,并提升应用能力。

本书为用书教师提供课件和源代码,用书教师可登录华章网站下载。

上架指导

计算机\程序设计

封底文字

许多人学习程序设计语言方式非常低效,对具体机制来说,学习时不知其要解决何种问题、怎样解决,而仅关注语法或内容的细节,缺乏宏观上的理解;对具体语法来说,则单纯记忆相关规则,而不思考其引入缘由。这样,枯燥琐碎的规则即使一时记住,也很难深层应用,更难从本质上掌握。
本书从方法学角度展开介绍,试图改变上述局面。首先,在每章的起始处给出了“本章方法学导引”,用不涉及语法的通俗语言描述,旨在让读者了解本章内容的来龙去脉、重点难点,以便从宏观层面掌握本章内容的脉络框架。在介绍具体内容时,引入了丰富的实例,并辅之以翔实的案例分析,让读者理解案例的设计初衷,把握其精髓。对章节中涉及的语法规则,本书也注重从相关内容的语义和应用背景角度进行分析,让读者理解这些规则产生的原因,而非单纯记忆规则。另外,对Java依托的面向对象程序设计方法,本书甚至专门辟出章节,在介绍面向对象相关语法之前,讨论面向对象因何而生、核心概念以及如何使用,这样,读者在接触后续的语法机制时,就会有所准备、有所思考,而不是简单地盲从。
期望通过上述模式,读者不仅能“知其然,同时知其所以然”,更能掌握一种新的学习和思维方式,以锤炼独立自主的创新能力。

图书序言

为何要从方法学角度描述
一、学习程序设计存在的问题
  做一名合格的软件开发的设计人员并不容易。大型软件项目的开发常需整合不同语言、方法的优势于一体。很多时候,市场也不允许程序员熟悉某种方法或语言后再实施开发,常常需要边学边用。因此程序员面临着沉重的学习和工作压力。在职业生涯中,要学习和使用种类繁多且不断更新的语言、技术和工具平台去解决各种领域中的实际问题。这不仅需要程序员具备较强的自学能力,更要有较强的分析问题和解决问题的能力。
  教育机构是培养程序员的主要场所,但从教学一线的反馈来看,情形并不乐观。主要存在两大问题:被动学习和学习缺乏系统观,使得学习低效,提高乏力。具体而言,就是依照书本展示的内容学习,学习偏重语法,借助简单的应用来学习琐碎的细节和复杂的机理。但在学习过程中缺少主动思考或反思,如思考所学语法机制的引入目的何在、要解决何种问题、怎样解决(方案、策略、需要哪些语法要素)、如何应用等。结果,虽然学生花费了大量的时间和精力,但对所学知识的理解仅停留于低层次的简单语法应用。实际应用时,仍欠缺分析问题、解决问题的能力,距宏观掌控、灵活运用还有很大差距。在学习新语言、技术时,很难有触类旁通的效果。这严重背离了教育的初衷。
二、学习要有正确的认识和方法
  要培养较强的自学能力和独立的分析问题、解决问题能力,关键在于掌握科学的学习方法和思维习惯,它将有助于在学习过程中或处理问题时透过繁杂的表象,发现事物的核心。究竟什么样的学习方法和思维习惯才算科学呢?哲学上使用认识论和方法论来回答这一问题,这对于普通读者而言太过抽象。这里将结合计算机这一具体学科,简单讨论一些较为具体的认识和方法,并将这些认识和方法融入到本书内容中。
  在认识方面,不应把各类语言、技术看得过于神秘复杂。计算机仅是一种工具。为让其帮助人们解决问题,设计者需要综合运用领域知识,给出符合计算机特点的解决方案。众所周知,计算机的特点就是机械(或自动)计算。计算的每一步都是确定的,甚至是可量化的。执行过程就像多米诺骨牌一样,后一步在前一步的基础上执行。若将解决方案比作一栋建筑,领域知识就是构造建筑物的基本元素,而相关语言、技术不过是对这些基本元素的描述和使用手段。为便于人们认识、理解计算和计算机科学,卡内基梅隆大学的周以真(Jeannette M. Wing)教授提出计算思维的概念:计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类行为,它包括了涵盖计算机科学之广度的一系列思维活动。深入理解计算思维,将有助于人们从全局和更高的抽象层次观察事物,有助于透过繁杂表象抓住核心本质,并在设计时更有效地利用自身拥有的知识基础。正如在规模较大的软件公司中,能自觉应用计算思维的数学专业人员往往身居高位,仅会编码的程序员则是公司蓝领;再比如,在动漫制作领域,处于核心地位的并非专业的程序设计人员,而是懂得应用计算思维的动漫画家以及剧情设计人员。
  学习不仅需要科学的认识,更要讲究科学的方法。什么样的方法才算科学呢?这首先要求我们必须要了解方法学。方法学(methodology),又称方法论,是哲学上有关如何认识世界、改造世界的根本方法的学说。通俗地讲,就是研究人们用什么样的方式、方法来观察事物和处理问题的学说。方法学的主要论著首推法国人勒奈·笛卡儿于1637年出版的著名哲学著作《正确思维和发现科学真理的方法论》(后人简称《方法论》)。该书对西方人的思维方式、思想观念和科学研究方法产生了极大的影响。从现代认知心理学角度看,方法学试图通过对具体方法的起因、内容以及应用背景的分析,探求学科的理论基础。
  鉴于方法学对认知的巨大影响,本书将以方法学作为各类学习方法的总纲,以是否有利于理解、掌握和运用所学知识作为判定方法是否科学的依据。在此基础上,下面将引入若干符合计算机科学特点的学习方法和思维习惯,并将其融入本书内容中,期望对指导学习过程、发展思维习惯有所裨益。
  注意 在计算机科学中,有专门的程序设计方法学。我国著名学者徐家福在《计算机百科全书》(第二版,张孝祥等编著)中指出,程序设计方法学有两种含义:其一,主要涉及对于指导程序设计工作的原理和原则,以及基于这些原理和原则的设计方法和技术,着重研究各种方法的共性与个性、各自的优缺点;其二,针对某一领域或某一领域的特定一类问题进行程序设计的指导原则和所用的一整套特定程序设计方法所构成的体系,如Java语言的程序设计方法学。第一种含义对程序员选取程序设计方法有重要的指导作用。本书倡导的方法学,在具体内容上隶属于第二种含义的范畴。如其中的面向对象部分,讨论了面向对象思想产生的背景、需要哪些概念、方法和技术,并结合Java语言侧重的具体领域、环境和其他侧重点,讨论Java面向对象的支撑机制。对Java的其他语言机制,也非常注重其产生背景和问题解决策略和应用方式,而非简单地介绍语法。这样才能较为深入地理解Java、应用Java。
三、若干学习方法
  特别要强调的是,本节并非说教,而是阐述一种审视和思考问题的模式,同时也是本书选择、组织内容所使用的策略,希望读者仔细领会。
  从方法学角度审视和思考问题,应注意以下四点:
1. 要多角度思考问题
  孟子云:尽信书,则不如无书。在学习语言时,若仅把自己当作学生,则可能出现书本讲什么,你就学什么的情况,学习始终处于被动状态,很容易迷失于纷繁复杂的语法中难以自拔。俗话说,“站得高,看得远”。要改变这一现状,必须从多角度思考问题。对计算机科学而言,常需要从概念的提出者、设计者和使用者三个角度思考问题。因为每一知识点往往对应一个或若干个概念,从概念的三种不同视角审视知识点,便能从不同层面理解和掌握知识。
  ?从概念提出者角度考虑问题,有助于跳出语法细节,真正理解概念的内涵
  概念的提出,常有具体的应用背景和问题;提出的概念是完美诠释问题解决方案的关键,且与语法无关。因此从概念提出者的视角审视问题,容易从较高的抽象层次理解知识点的内涵。从概念提出者角度考虑问题,就是要回答如下问题:某知识点(概念)引入背景是什么?要解决什么问题?知识点中应包含哪些内容,其间又有何关系等。例如,对多线程这个概念,我们要思考为何要提出线程概念?旨在解决什么问题?现有概念无法解决这一问题吗?(或还存在何种问题?)线程为何能(或怎样)解决这一问题?将在何时应用于何处?期望线程还具备怎样的特色?……
  ?从概念设计者的视角考虑问题,有助于理清知识点的脉络框架
  概念设计是对概念的具体实现。它涉及两方面内容:设计策略和对外提供的语法机制。设计策略是反映到机制的内部机理。如Java线程的实现,实现策略主要是如何并发执行、如何管理调度线程。只有了解内部机理,才能解释诸多繁杂的语法表象,使得运用时自然地遵循语法,而不是时刻牢记语法规则。正如武侠小说中的武功,重要的是其招式运用的意境,而非时刻牢记招式。另外,结合内部机理来理解概念的应用,能自然地理解各种语法机制的作用、存在的必要性,以及何时、如何使用。例如,对线程机制而言,系统需要提供线程管理调度机制(整合于Thread类)、满足用户的线程设计需求(即Runnable接口的run()方法)以及线程间数据的存取。在使用线程时,可能需要互斥和同步,又需要临界区和线程通信机制的支持……了解这些后,关于线程的相关内容就能形成一个较为完整的知识脉络。
  ?从概念使用者角度考虑问题,有助于提高设计的可维护性  
  这里的概念,不仅包含语言机制,还包括程序员自己设计出的产品,如模块、类等。使用者就是使用这些语言机制或模块实施二次开发的程序员。当设计者需要更改部分模块以便满足特定需求时,设计者同时也是使用者。
  软件已不适合用对、错去评判。对昨天而言正确的设计,今天需求变了,就要改动设计以满足需求。前期的设计可维护性好,后面的改动就比较容易,就不容易引入新的错误。因此让软件具有良好的可维护性,可以说是软件工程追求的目标。对概念使用者而言,当然期望使用的产品(如模块/类等)功能上简单独立、易于操作、易于维护,同时又能方便地与其他模块组装使用。例如,PC的结构可满足用户的DIY需求,对故障模块的更换也很容易,对用户而言就是可维护性好;而单板机设计就无法满足上述DIY需求,即可维护性差。从概念使用者角度考虑问题,就是要将软件设计得如PC般容易使用。如在设计类/接口时,需要考虑如何设计才能既要方便易用,又能确保类/模块等自身安全,最好还能方便日后的维护。
  注意 本书在每章的方法学导引部分,从概念提出者、概念设计者视角对章节内容进行了简单剖析,读者学习前应认真阅读,学习时结合语法细节仔细体会,学习后将自己的总结与之对比,以便真正理解和掌握。这样做,不是为了要成为语言大师,而是要训练自己的高层次思维能力。这有利于学习新语言时触类旁通。
  2. 要了解并掌握知识脉络
  知识脉络涉及所学知识的组成概况,重点、难点、各知识点的关系等。其主要作用就是为学习过程进行定位和导航,让学习者知道自己身处何地,要学什么、为何学、用在哪里、如何用等。了解了这些,学习就能由“要我学……”变成“我要学……”,从而使学习更主动、更高效。例如,对于第2章程序设计语言的基本成分,从表面上看,语言具备标识符、关键字、运算符、表达式、语句等基本成分。但知识脉络的重点不是“展现”多少基本成分,而是“需要”哪些基本成分。换言之,为何需要这些基本成分?这些基本成分有何作用?彼此间的关系又是怎样的?要结合程序的作用、语义来理解和掌握这些基本成分的作用,才能真正了解知识的脉络。
  除导航学习外,知识脉络还能帮助总结所学。若学习后无法理出清晰的知识脉络,说明对所学尚未真正理解。此时应当以多角度思考问题的方式对知识进行分析、整理、归纳和提炼,获取更加细化的知识脉络。
  注意 由于初学者很难整理出知识的脉络,本书的“方法学导引”将为读者给出这方面的介绍,并试图用通俗的、与具体语法细节无关的方式介绍为何学、学了有何用,以及使用的策略。学习时心理上有所准备、有所预期,学习才能事半功倍。
  3. 要用实践帮促学习
  宋代陆游曾有名句“纸上得来终觉浅,绝知此事要躬行”。在学习过程中,不仅要认真理解、领悟例题中所蕴含的知识,更要经常设计、编写各类大小规模不等的程序。这些程序涉及多个层面,如模仿例题编写出类似的程序,以对所学进行巩固;偶有所思,对知识有所推测,设计出一些小程序对所思所想进行验证,并帮助进一步的分析;或是设计出融合多个知识点的综合案例,如融合多线程、异常处理、GUI编程的指针形状的时钟;设计满足实际需要的综合案例,如制作一个下载工具、一个浏览器等。另外,构思案例、制定设计方案本身也是一项非常重要的创造性工作,对理解和应用所学十分有益。
  4. 要勤于总结
  孔子曰:学而不思则罔,思而不学则殆。这里的思,就含有总结之意;总,即总揽、汇总;结,就是结论、结果。总结,就是在某项工作、学习告一段落后,进行冷静的分析、反思,既能提高认识,获得经验,也为后续工作奠定思想上的基础。总结要有一定的针对性和目的性。例如,在某章节学习完成后,可对章节内容系统梳理,以获取更为系统、完善的知识脉络;也可从概念提出者、设计者和使用者三种视角对所学进行反思和总结,以实现对所学内容的提炼和升华。在完成某系统的设计后,需要总结成败得失,获取经验教训。
  总结还是一个融合各种所学知识的过程,如有C++经验的人在学过Java后,会发现Java的单继承机制和C++的多继承机制不同。这时,就该反思:继承的原始含义是什么?是多继承还是单继承,或是与二者无关?Java为何这样做,蕴含的思想又是什么?……为完成上述反思,就必须查阅面向对象方法的相关资料,最好再查查C++/Java关于继承是否有深层的历史性的考虑。这样,对继承机制及Java、C++的设计策略就会有更深层的认识。而这种认识,对以后实践开发有着潜移默化的深远影响。
四、本书的撰写思想
  对任何计算机语言的学习,若直接学习具体内容,常会迷失于繁杂的语法细节中。学前不知为何学;学时不知怎样学;学后不知有何用、如何用。这种学习模式很低效。即使一时掌握了,记忆也很难牢固。从方法学角度审视和思考语言,可帮助读者跳过纷繁复杂的语法机制表象,快速直接地触及语言机制的本质特点,使得学习更高效。
  本书撰写和组织内容时尝试融入上述思想和方法,借以指导学习过程和思维方式。具体而言:在介绍具体语言机制之前先让读者了解该机制的引入背景、要解决何种问题以及解决的策略(这样语言机制的具体内容,就是解决策略的具体实现方式)。之后,结合案例阐述策略的应用,并对内容的细节进一步丰富和完善。值得指出的是,本书介绍的案例不仅展示应用,而且带有较为详尽的案例剖析,如指出示例关键所在、易错之处、总结出应用的一般步骤/形式、对应用如何拓展等。内容中还穿插各种思考题和实验验证题。使用这种模式,期望读者不仅对所学语言有全面、深入、立体的理解,更能掌握一种学习和思考问题的方法。
  用方法学指导本书内容的组织和撰写,是一种全新的尝试。由于时间紧迫,水平有限,书中难免许多地方表述不妥,甚至很多方法学思想的贯彻也并不彻底,在此恳请读者批评指正,不胜感激!
  E-mail: huazhizhang@263.net
编  者
2011.7

图书目录

序言:为何要从方法学角度描述
教学建议
第1章 程序设计语言概述 1
1.0 本章方法学导引 1
1.1 程序的含义和程序设计策略 2
1.1.1 程序的含义 2
1.1.2 程序设计的通用策略 2
1.2 程序设计语言的重要属性 4
1.2.1 语言的设计范型 4
1.2.2 类型系统 5
1.2.3 编译型语言和解释型语言 6
1.3 Java语言概述 7
1.3.1 Java语言的诞生和发展 7
1.3.2 Java语言的特点 8
1.3.3 Java编程环境 10
1.3.4 Java程序的运行原理 12
思考与练习 14
第2章 程序设计语言的基本成分 15
2.0 本章方法学导引 15
2.1 程序设计语言基本成分概述 16
2.2 字符集 17
2.3 词法元素 17
2.3.1 标识符和关键字 17
2.3.2 运算符、分隔符和限界符 18
2.3.3 字面量 19
2.3.4 注释 19
2.4 数据类型 19
2.4.1 什么是数据类型 19
2.4.2 数据类型的实例 21
2.4.3 Java类型系统概述 22
2.4.4 Java的基本数据类型 22
2.4.5 Java的引用数据类型 25
2.4.6 数组 27
2.4.7 字符串 29
2.5 表达式 31
2.5.1 表达式的含义 31
2.5.2 表达式计算过程中的类型转换 32
2.5.3 表达式的运算顺序 33
2.6 语句 34
2.6.1 语句概述 34
2.6.2 说明语句 34
2.6.3 赋值语句 35
2.6.4 输入和输出语句 35
2.6.5 控制语句 37
2.6.6 标签和转向语句 45
2.7 子程序 46
2.7.1 子程序概述 46
2.7.2 子程序的参数传递 47
2.7.3 Java的应用程序结构 49
思考与练习 49
第3章 程序设计方法概述 52
3.0 本章方法学导引 52
3.1 问题规模对程序设计方法的影响 53
3.2 结构化程序设计方法 54
3.2.1 方法起源 54
3.2.2 核心思想 54
3.2.3 实例剖析 55
3.2.4 结构化程序设计方法的优缺点 56
3.3 面向对象程序设计方法 56
3.3.1 方法起源 56
3.3.2 核心思想 57
3.3.3 基本概念 58
3.3.4 实例剖析 60
3.4 两种方法的简单评述 61
思考与练习 62
第4章 面向对象语言基础 64
4.0 本章方法学导引 64
4.1 区分类、对象和对象的引用 65
4.1.1 一个简单的例子 65
4.1.2 对象和对象引用的内存管理 66
4.1.3 对象及其引用的创建和初始化 69
4.1.4 对象的销毁 70
4.2 对象的使用 71
4.2.1 对象的引用 71
4.2.2 赋值 72
4.2.3 相等判断 72
4.2.4 对象数组 73
4.2.5 从存储管理角度解释参数传递 74
4.2.6 成员变量和局部变量 75
4.3 类的继承 76
4.3.1 继承的语法 76
4.3.2 is-A与has-A关系 77
4.3.3 构造函数的调用顺序 77
4.3.4 super和this 78
4.4 类及其成员的修饰 80
4.4.1 访问权限修饰 80
4.4.2 final修饰 81
4.4.3 static修饰 82
4.5 对象的多态 84
4.5.1 多态的含义 84
4.5.2 重载 85
4.5.3 重写 86
4.5.4 重定义 89
4.5.5 instanceof与多态性 90
4.6 抽象类和接口 91
4.6.1 抽象类和接口的引入背景 91
4.6.2 抽象方法和抽象类 91
4.6.3 接口 93
4.7 类中的特殊成员 97
4.7.1 内嵌类型 97
4.7.2 初始化块 100
4.7.3 本地方法 101
思考与练习 101
第5章 类的管理以及常用工具类 104
5.0 本章方法学导引 104
5.1 包 105
5.1.1 包的声明和导入 105
5.1.2 访问权限 107
5.2 包装器类和自动装箱/拆箱 108
5.2.1 包装器类的引入背景 108
5.2.2 包装器类的构造函数 109
5.2.3 包装器类的常用方法 109
5.2.4 自动装箱和自动拆箱 110
5.3 枚举 111
5.4 数组的高级应用 112
5.4.1 紧凑型for循环结构 112
5.4.2 复制数组 112
5.4.3 Arrays工具类 113
5.5 字符串的高级应用 114
5.5.1 StringBuffer和StringBuilder 114
5.5.2 正则表达式 114
5.5.3 String的高级应用 116
思考与练习 118
第6章 异常处理和断言 120
6.0 本章方法学导引 120
6.1 异常机制概述 121
6.1.1 异常难以避免 121
6.1.2 传统的异常处理手段 121
6.1.3 Java的异常处理策略 122
6.1.4 Java异常的分类 122
6.2 异常处理机制 123
6.2.1 异常的捕获和处理 123
6.2.2 异常的声明 125
6.3 对异常机制的补充 126
6.3.1 虚拟机异常和程序性异常 126
6.3.2 异常的传播 126
6.3.3 对重写方法的补充说明 127
6.4 自定义异常类 128
6.5 断言 129
思考与练习 130
第7章 线程 131
7.0 本章方法学导引 131
7.1 线程机制概述 132
7.1.1 并发程序的引入背景 132
7.1.2 程序、进程与线程 132
7.1.3 Java线程机制概述 133
7.1.4 Java的线程状态和生命周期 135
7.2 线程的构造和运行 136
7.2.1 用Thread类构造线程对象 136
7.2.2 用Runnable辅助构造线程 138
7.3 线程的互斥机制 139
7.3.1 为何需要引入互斥机制 139
7.3.2 怎样实现互斥 140
7.3.3 synchronized标记 141
7.3.4 关于互斥的进一步讨论 142
7.4 线程的同步机制 144
7.4.1 线程的异步与同步 144
7.4.2 如何实现同步 144
7.4.3 Java的同步机制实现 145
7.5 线程调度 147
7.5.1 线程的优先级和调度策略 148
7.5.2 线程调度常用方法 149
思考与练习 150
第8章 GUI编程基础和Applet 152
8.0 本章方法学导引 152
8.1 GUI编程概述 153
8.1.1 字符用户界面和图形用户界面 153
8.1.2 图形用户界面的基本元素 153
8.1.3 awt和swing 154
8.1.4 GUI编程涉及的基本环节 155
8.2 一个简单界面的设计 155
8.2.1 常用组件介绍 155
8.2.2 一个简单GUI界面的设计实例 156
8.3 委托事件处理模型 157
8.3.1 模型的方法学思想 157
8.3.2 模型的构成要素和应用步骤 158
8.3.3 两个简单的事件处理实例 159
8.3.4 适配器类 162
8.4 布局管理 163
8.4.1 布局管理概述 163
8.4.2 Flow布局 164
8.4.3 GridLayout布局 165
8.4.4 BorderLayout布局 165
8.5 一个综合案例 166
8.6 Applet应用程序 169
8.6.1 什么是Applet 169
8.6.2 URL和HTML 169
8.6.3 一个简单的Applet 170
8.6.4 Applet生命周期和主要方法 171
8.6.5 Applet综合应用示例 173
8.6.6 Applet的安全限制 174
8.7 绘图基础 174
8.7.1 概述 174
8.7.2 绘图机制 175
8.7.3 若干示例 175
思考与练习 178
第9章 I/O流 180
9.0 本章方法学导引 180
9.1 I/O流概述 181
9.1.1 I/O流的引入背景 181
9.1.2 I/O流的总体设计 182
9.1.3 I/O流的基本应用框架 183
9.2 应用1:文件读/写 183
9.2.1 相关类简介 183
9.2.2 逐个字符读/写文件 184
9.2.3 按字符流整体读/写文件 185
9.2.4 基于缓冲区读/写文件 186
9.2.5 一个简单的文本文件编辑器 186
9.3 应用2:基本类型数据的读/写 189
9.3.1 系统类和标准流 190
9.3.2 从标准输入流读取数据 190
9.3.3 数值型数据的读/写 191
9.3.4 标准I/O重定向 193
9.4 应用3:对象的序列化 193
9.4.1 对象序列化的产生背景 193
9.4.2 对象序列化的实现 194
9.4.3 自定义序列化/反系列化过程 197
思考与练习 198
第10章 网络通信 200
10.0 本章方法学导引 200
10.1 基础知识 201
10.1.1 计算机网络和Java语言 201
10.1.2 网络中的相关标识 201
10.1.3 网络协议 202
10.2 以URL方式访问网络资源 204
10.2.1 相关类简介 204
10.2.2 URL访问网络资源的基本步骤 205
10.2.3 三个例子 205
10.3 基于流的端对端通信方式 208
10.3.1 相关类简介 208
10.3.2 实施通信的基本步骤 208
10.3.3 两个例子 209
10.4 基于数据报的端对端通信方式 213
10.4.1 相关类简介 213
10.4.2 实施通信的基本步骤 213
10.4.3 一个例子 214
思考与练习 215
第11章 泛型与集合框架 216
11.0 本章方法学导引 216
11.1 泛型含义及引入背景 217
11.2 Java泛型声明 218
11.2.1 泛型的简单声明和具体化 218
11.2.2 泛型参数的应用场合 219
11.2.3 给泛型参数加上约束 220
11.2.4 泛型参数的通配符 223
11.3 Java泛型实现机理及注意事项 226
11.3.1 Java泛型实现机理:擦拭 226
11.3.2 Java泛型机制的相关约束 228
11.4 泛型综合应用示例 230
11.4.1 一个简单的泛型容器 231
11.4.2 泛型迭代器 232
11.5 泛型综合应用:集合框架 235
11.5.1 集合框架引入背景 235
11.5.2 集合框架的基础结构 236
11.5.3 List结构应用示例 237
11.5.4 Set结构应用示例 239
11.5.5 Map结构应用示例 241
思考与练习 243
参考文献 245

教学资源推荐
作者: (美)Clovis L.Tondo,Scott E.Gimpel
作者: 刘艺 等
作者: Alfred V.Aho, Ravi Sethi, Jeffrey D.Ullman
作者: 夏天
参考读物推荐
作者: (美)Eric S. Roberts 著
作者: 刘志铭 等编著
作者: 郭鑫 顾彦玲 等编著
作者: 何沧平 著