一本百科全书式的Java编程秘笈,全面、新颖、详细、深入和实用
资深程序员15年开发经验的总结,完美展现Java应用开发的精髓
18小时配套教学视频 + 26小时进阶教学视频,赠送100页本书项目案例开发电子书及355页《Java程序员面试宝典》电子书
全面:涵盖Java基础语法、面向对象、多线程、集合、泛型、GUI编程、多媒体编程、数据库编程和网络编程等内容
新颖:以当前流行的JDK 1.7进行讲解,详细介绍了大量的新技术和新功能
详细:结合图示,从概念、语法、示例、技巧和应用等多角度分析每个知识点
实用:提供了450个实例、6个小案例、1个项目开发案例、346个习题
深入:深入剖析Swing包、实用工具类、集合、泛型等其他书中很少透彻介绍的内容
高效:提供了18小时配套教学视频及26小时Java进阶视频,高效而直观
“开发宝典丛书”是由清华大学出版社为软件开发爱好者精心打造的一套软件开发百科全书。丛书强调“全面、新颖、详细、实用、深入、高效”等特色,涵盖常见的编程语言和技术。丛书中的每本书都是由从事软件开发多年、具备丰富的开发经验的老手精心编写,讲解细腻,内容实用,并精心录制了配套教学视频。可以说,这套丛书是编程爱好者系统学习软件开发技术的不二选择,一册在手,万事无忧!
《Java编程实战宝典》以J2SE为平台,以最新的JDK1。7技术规范为切入点,全面、系统地介绍了Java的基础编程技术和常用开发方法。书中的各个技术点都提供了实例以供读者实战演练,各章最后还提供了实战练习题以帮助读者巩固和提高。本书配1张DVD光盘,内容为书中涉及的实例源文件及作者专门为本书录制的配套教学视频,以帮助读者更加高效、直观地学习本书内容。另外,光盘中还赠送了大量的Java范例、模块及项目案例开发的源程序和教学视频,非常超值。
本书共22章,分为8篇。首先讲述了Java的基础语法,然后介绍了Java中类和对象的实现,这也是Java的核心所在。随后介绍了Java中的高级技术,详细讨论了其中的多线程、集合、泛型和RTTI等。这些基本知识介绍完毕之后,就进入实际编程阶段,先后介绍了GUI程序设计、多媒体程序设计、数据库和网络程序设计,这些知识均以示例程序来讲解。最后用3章的篇幅介绍了一个完整的即时通信软件设计实例,让读者能够从实例中学习程序设计的真谛(因篇幅所限,此3章内容以PDF电子文档的格式收录于本书的配书光盘中)。
本书内容全面,实例丰富,特别适合想全面自学Java开发技术的人员阅读,也适合使用Java进行开发的工程技术人员和科研人员阅读。对于Java程序员,本书更是一本不可多得的案头必备参考手册。另外,本书也可作为计算机和软件工程等专业的教材和教学参考书。
超值、大容量DVD光盘
本书实例源文件
18小时配套教学视频
23小时Java开发实例教学视频
4个Java项目案例源程序及3小时教学视频
100页本书第8篇内容的电子书
355页《Java程序员面试宝典》电子书
一分钟了解本书精华内容
Java的开发运行环境(57分钟视频)
Java语言基础(75分钟视频)
对象和类(33分钟视频)
继承与多态(35分钟视频)
数组与字符串(69分钟视频)
Java的异常处理(58分钟视频)
Java输入输出处理技术(110分钟视频)
Java的多线程机制(83分钟视频)
运行时类型识别(37分钟视频)
泛型(18分钟视频)
Java集合框架(20分钟视频)
类型包装器、自动装箱和元数据(21分钟视频)
常用工具类(74分钟视频)
GUI程序设计(29分钟视频)
Java多媒体编程应用(16分钟视频)
数据库基础(47分钟视频)
Java数据库编程技术(110分钟视频)
Java网络编程技术(78分钟视频)
JSP程序设计(42分钟视频)
即时通讯系统开发项目实战(71分钟视频)
第3 章 对 象 和 类
在当今的计算机大型应用软件开发领域,面向对象技术正在逐步取代面向过程的程序设计技术。本章将介绍面向对象的基本知识和Java 实现面向对象程序设计的主要工具——类。如果读者缺乏关于面向对象程序设计的背景,一定要仔细阅读本章。如果读者有C++编程经验,也要注意二者之间的区别,毕竟Java 在类的具体实现上与C++有较大的差别。学习本章面向对象的相关知识,主要内容有以下几点:
面向对象的基本概念;
对象与类的理解;
成员变量的定义与使用;
方法的定义及实现;
方法调用;
构造方法与静态方法;
终结处理与垃圾回收。
3.1 什么是面向对象
面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是20 世纪90 年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很广的范围。例如,数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD 技术和人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物,它是相对于面向过程而言的。通过面向对象的方式,将现实世界的物抽象成对象,现实世界中的关系抽象成类、继承等,以更直观、清晰地完成对现实世界的抽象与数字建模。讨论面向对象方面的文章非常多。但是,明确地给出“面向对象”的定义却非常少。
最初,“面向对象”是专指在程序设计中采用封装、继承和抽象等设计方法。可是,这个定义显然不能再适合现在的情况。面向对象的思想已经涉及到软件开发的各个方面。例如,面向对象的分析(Object Oriented Analysis,OOA)、面向对象的设计(Object Oriented Design,OOD)以及经常说的面向对象的编程(Object Oriented Programming,OOP)。许多有关面向对象的文章,都只是讲述在面向对象的开发中所需要注意的问题,或所采用的比较好的设计方法。看这些文章只有真正懂得什么是对象,什么是面向对象,才能最大程度地收获知识。
?说明:在本章中,着重讨论OOP,有关OOA 和OOD 请读者查阅有关软件工程的书籍。OOP 从所处理的数据入手,以数据为中心而不是以服务(功能)为中心来描述系统。它把编程问题视为一个数据集合,因为数据相对于功能而言,具有更强的稳定性。OOP 同结构化程序设计相比最大的区别就在于:前者首先关心的是所要处理的数据,而后者首先关心的是功能。在计算机编程中使用OOP 方法,更利于从人理解的方式对于复杂系统的进行分析、设计与编程。同时能有效提高编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。
3.1.1 对象的理解
OOP 是一种围绕真实世界的概念来组织模型的程序设计方法,它采用对象来描述问题空间的实体。可以说,“对象”这个概念是OOP 最本质的概念之一,在面向对象的编程过程中,首先根据客户需求抽象出业务对象;然后对需求进行合理分层,构建相对独立的业务模块;之后设计业务逻辑,利用多态、继承、封装和抽象的编程思想,实现业务需求;最后通过整合各模块,达到高内聚、低耦合的效果,从而满足客户要求。但是,如何给“对象”下一个严谨的定义,却是一个棘手的问题,目前还没有统一的认识。
在现实生活中,一般认为对象是行动或思考时作为目标的各种事物。对象所代表的本体可能是一个物理存在,也可能是一个概念存在。例如一枝花、一个人、一项计划等。在使用计算机解决问题时,对象是作为计算机模拟真实世界的一个抽象,一个对象就是一个物理实体或逻辑实体,它反映了系统为之保存信息和(或)与它交互的能力。
在计算机程序中,对象相当于一个“基本程序模块”,它包含了属性(数据)和加在这些数据上的操作(行为)。对象的属性是描述对象的数据,属性值的集合称为对象的状态。对象的行为则会修改这些数据值并改变对象的状态。因此,在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”这一公式来表达。
下面以一个生活中常见的例子来说明对象这个概念。例如“椅子”这个对象,它是“家具”这个更大的一类对象的一个成员。椅子应该具有家具所具有的一些共性,如:价格、重量和所有者等属性。它们的值也说明了椅子这个对象的状态。例如,价格为100 元,重量为5 公斤,所有者是小王等。类似地,家具中的桌子、沙发等对象也具有这些属性。这些对象所包含的成分可以用图3.1 来说明。
对象的操作是对对象属性的修改。在面向对象的程序设计中,对象属性的修改只能通过对象的操作来进行,这种操作又称为方法。比如上面的对象都有“所有者”这一个属性,修改该属性的方法可能是“卖出”,一旦执行了“卖出”操作,“所有者”这个属性就会发生变化,对象的状态也就发生了改变。现在的问题是,所有的对象都有可能执行“卖出”操作,那么如何具体区分卖出了哪个对象,这是需要考虑的。面向对象的设计思路把“卖出”这个操作包含在对象里面,执行“卖出”操作,只对包含了该操作的对象有效。因此,整个对象就会变成图3.2 这个样子。
由于对象椅子已经包含了“卖出”操作,因此,当执行“卖出”操作时,对象外部的使用者并不需要关心它的实现细节,只需要知道如何来调用该操作,以及会获得怎样的结果就可以了,甚至不需要知道它到底修改了哪个属性值。这样做不仅实现了模块化和信息隐藏,有利于程序的可移植性和安全性,也有利于对复杂对象的管理。图3.1 对象的属性集合 图3.2 封装了属性和操作的对象
3.1.2 什么是类
“物以类聚”是人们区分、归纳客观事物的方法。在面向对象系统中,人们不需要逐个去描述各个具体的对象,而是关注具有同类特性的一类对象,抽象出这样一类对象共有的结构和行为,进行一般性描述,这就引出了类的概念。椅子、桌子、沙发等对象都具有一些相同的特征,由于这些相同的特征,它们可以归为一类,称为家具。因此,家具就是一个类,它的每个对象都有价格、重量及所有者这些属性。也可以将家具看成是产生椅子、桌子、沙发等对象的一个模板。椅子、桌子、沙发等对象的属性和行为都是由家具类所决定的。家具和椅子之间的关系就是类与类的成员对象之间的关系。类是具有共同属性、共同操作的对象的集合。而单个的对象则是所属类的一个成员,或称为实例(instance)。在描述一个类时,定义了一组属性和操作,而这些属性和操作可被该类所有的成员所继承,如图3.3 所示。
图3.3 由类到对象的继承
图3.3 表明,对象会自动拥有它所属类的全部属性和操作。正因为这一点,人们才会知道一种物品是家具时,主动去询问它的价格、尺寸和材质等属性。对于初学者而言,类和对象的概念最容易混淆。类属于类型的范畴,用于描述对象的特性。对象属于值的范畴,是类的实例。从集合的角度看,类是对象的集合,它们是从属关系。也可以将类看成是一个抽象的概念,而对象是一个具体的概念。例如苹果是一个类,而“桌子上的那个苹果”则是一个对象。从编程的角度看,类和对象的关系可以看成是数据类型和变量的关系。还可以认为类是一个静态的概念,而对象是一个动态的概念,它具有生命力。类和对象的关系可以用如图3.4 所示这个实例来演示,如图3.4 所示。
图3.4 类与对象的关系
3.1.3 消息的定义
由上述内容可知,对象的行为是通过其定义的一组方法来描述,对象的结构特征是由它的属性来表现。但是,对象不会无缘无故地执行某个操作,只有在接受了其他对象的请求之后,才会进行某一操作,这种请求对象执行某一操作,或是回答某些信息的要求称为消息。对象之间通过消息的传递来实现相互作用。消息一般有3 个组成部分:消息接收者(接收对象名)、接收对象应采用的方法以及方法所需要的参数。同时,接收消息的对象在执行完相应的方法后,可能会给发送者返回一些信息。
例如,教师向学生布置作业“07 级计算机1 班做5 道习题”。其中,教师和学生都是对象,“07 级计算机1 班”是消息的接收者,“做习题”是要求目标对象——学生执行的方法,“5 道”是要求对象执行方法时所需要的参数。学生也可以向教师返回作业信息。这样,对象之间通过消息机制,建立起了相互关系。由于任何一个对象的所有行为都可以用方法来描述,所以通过消息机制可以完全实现对象之间的交互。在Java 程序设计中,所需完成的功能任务就在对象之间的消息传递与相互作用之间完成。
3.1.4 面向对象的基本特征
在上述面向对象的基本概念基础之上,不可避免地要涉及到面向对象程序设计所具有的4 个共同特征:抽象性、封装性、继承性和多态性。
1.抽象
抽象是人们认识事物的常用方法,比如地图的绘制。抽象的过程就是如何简化、概括所观察到的现实世界,并为人们所用的过程。抽象是软件开发的基础。软件开发离不开现实环境,但需要对信息细节进行提炼、抽象,找到事物的本质和重要属性。抽象包括两个方面:过程抽象和数据抽象。过程抽象把一个系统按功能划分成若干个子系统,进行“自顶向下逐步求精”的程序设计。数据抽象以数据为中心,把数据类型和施加在该类型对象上的操作作为一个整体(对象)来进行描述,形成抽象数据类型ADT。所有编程语言的最终目的都是提供一种“抽象”方法。一种较有争议的说法是:解决问题的复杂程度直接取决于抽象的种类及质量。其中,“种类”是指准备对什么进行“抽象”。汇编语言是对基础机器的少量抽象。后来的许多“命令式”语言(如FORTRAN、BASIC 和C)是对汇编语言的一种抽象。与汇编语言相比,这些语言已有了较大的进步,但它们的抽象原理依然要求程序设计者着重考虑计算机的结构,而非考虑问题本身的结构。
在机器模型(位于“方案空间”)与实际解决的问题模型(位于“问题空间”)之间,程序员必须建立起一种联系。这个过程要求人们付出较大的精力,而且由于它脱离了编程语言本身的范围,造成程序代码很难编写,而且要花较大的代价进行维护。由此造成的副作用便是一门完善的“编程方法”学科。
为机器建模的另一个方法是为要解决的问题制作模型。对一些早期语言来说,如LISP和APL,它们的做法是“从不同的角度观察世界”、“所有问题都归纳为列表”或“所有问题都归纳为算法”。PROLOG 则将所有问题都归纳为决策链。对于这些语言,可以认为它们一部分是面向基于“强制”的编程,另一部分则是专为处理图形符号设计的。每种方法都有自己特殊的用途,适合解决某一类的问题。但只要超出了它们力所能及的范围,就会显得非常笨拙。
面向对象的程序设计在此基础上则跨出了一大步,程序员可利用一些工具来表达问题空间内的元素。由于这种表达非常普遍,所以不必受限于特定类型的问题。人们将问题空间中的元素以及它们在方案空间的表示物称作“对象”。当然,还有一些在问题空间没有对应体的其他对象。通过添加新的对象类型,程序可进行灵活的调整,以便与特定的问题配合。所以在阅读方案的描述代码时,会读到对问题进行表达的话语。与以前的方法相比,这无疑是一种更加灵活、更加强大的语言抽象方法。
总之,OOP 允许人们根据问题,而不是根据方案来描述问题。然而,仍有一个联系途径回到计算机。每个对象都类似一台小计算机;它们有自己的状态,而且可要求它们进行特定的操作。与现实世界的“对象”或者“物体”相比,编程“对象”与它们也存在共通的地方:它们都有自己的特征和行为。
2.封装
封装是面向对象编程的特征之一,也是类和对象的主要特征。封装将数据以及加在这些数据上的操作组织在一起,成为有独立意义的构件。外部无法直接访问这些封装了的数据,从而保证了这些数据的正确性。如果这些数据发生了差错,也很容易定位错误是由哪个操作引起的。
如果外部需要访问类里面的数据,就必须通过接口(Interface)进行访问。接口规定了可对一个特定的对象发出哪些请求。当然,必须在某个地方存在着一些代码,以便满足这些请求。这些代码与那些隐藏起来的数据叫做“隐藏的实现”。站在过程化程序编写(Procedural Programming)的角度,整个问题并不显得复杂。一种类型含有与每种可能的请求关联起来的函数。一旦向对象发出一个特定的请求,就会调用那个函数。通常将这个过程总结为向对象“发送一条消息”(提出一个请求)。对象的职责就是决定如何对这条消息作出反应(执行相应的代码)。
若任何人都能使用一个类的所有成员,那么可对这个类做任何事情,则没有办法强制他们遵守任何约束——所有东西都会暴露无遗。有两方面的原因促使了类的编制者控制对成员的访问。第一个原因是防止程序员接触他们不该接触的东西——通常是内部数据类型的设计思想。若只是为了解决特定的问题,用户只需操作接口即可,无需明白这些信息。类向用户提供的实际是一种服务,因为他们很容易就可看出哪些对自己非常重要,以及哪些可忽略不计。进行访问控制的第二个原因是允许库设计人员修改内部结构,不用担心它会对客户程序员造成什么影响。例如,编制
者最开始可能设计了一个形式简单的类,以便简化开发。后来又决定进行改写,使其更快地运行。若接口与实现方法早已隔离开,并分别受到保护,就可放心做到这一点,只要求用户重新链接一下即可。封装考虑的是内部实现,抽象考虑的是外部行为。符合模块化的原则,使得软件的可维护性、扩充性大为改观。
3.继承
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类的继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且派生类可以修改或增加新的方法使之更适合特殊的需求。这也体现了大自然中一般与特殊的关系。继承性很好地解决了软件的可重用性问题。比如说,所有的Windows 应用程序都有一个窗口,它们可以看作都是从一个窗口类派生出来的。但是有的应用程序用于文字处理,有的应用程序用于绘图,这是由于派生出了不同的子类,各个子类添加了不同的特性。关于继承的详细讨论,将在本书4.1~4.2 节进行。
4.多态
多态也叫多态性,是指允许不同类的对象对同一消息作出响应。比如同样的加法,把两个时间加在一起和把两个整数加在一起肯定完全不同。又比如,同样的选择“编辑”和“粘贴”操作,在字处理程序和绘图程序中有不同的效果。多态性包括参数化多态性和运行时多态性。多态性语言具有灵活、抽象、行为共享和代码共享的优势,很好地解决了应用程序函数同名问题。关于多态性的讨论,将在4.4 节进行。最后,以Alan Kay 的话作为本节的结束语。他总结了Smalltalk(这是第一种成功的面向对象程序设计语言,也是Java 的基础语言)的5 大基本特征。通过这些特征,读者可以理解“纯粹”的面向对象程序设计方法。
(1)所有东西都是对象。可将对象想象成一种新型变量,它保存着数据,但可要求它对自身进行操作。理论上讲,可从要解决的问题上,提出所有概念性的组件,然后在程序中将其表达为一个对象。
(2)程序是一大堆对象的组合。通过消息传递,各对象知道自己该做些什么。为了向对象发出请求,需向那个对象“发送一条消息”。更具体地讲,可将消息想象为一个调用请求,它调用的是从属于目标对象的一个子例程或函数。
(3)每个对象都有自己的存储空间,可容纳其他对象。或者说,通过封装现有对象,可制作出新型对象。所以,尽管对象的概念非常简单,但在程序中却可达到任意高的复杂程度。
(4)每个对象都有一种类型。根据语法,每个对象都是某个“类(Class)”的一个“实例”。其中,“类”是“类型(Type)”的同义词。一个类最重要的特征就是“能将什么消息发给它?”。
(5)同一类所有对象都能接收相同的消息。这实际是别有含义的一种说法,读者不久便能理解。例如,由于类型为“圆(Circle)”的一个对象也属于类型为“形状(Shape)”的一个对象,所以一个“圆”完全能接收“形状”的消息。这意味着可让程序代码统一指挥“形状”,令其自动控制所有符合“形状”描述的对象,其中自然包括“圆”。这一特性称为对象的“可替换性”,是OOP 最重要的概念之一。
……
第1篇 Java基础知识入门
第1章 Java的开发运行环境( 教学视频:57分钟)
1.1 Java运行原理与Java虚拟机
1.1.1 Java运行原理简述
1.1.2 Java虚拟机
1.2 Java的开发环境
1.2.1 JDK的安装
1.2.2 如何设置系统环境变量
1.2.3 JDK安装后的测试与验证
1.2.4 编译命令的使用
1.2.5 解释执行命令的使用
1.2.6 UltraEdit的使用
1.3 Java应用程序示例
1.4 Java Applet程序示例
1.5 本章小结
1.6 实战习题
第2章 Java语言基础( 教学视频:75分钟)
2.1 Java语言的关键特性
2.2 Java程序的构成及文本风格
2.2.1 Java程序的构成
2.2.2 Java的代码结构
2.2.3 Java程序的格式编排
2.2.4 Java代码的注释风格
2.3 数据类型
2.3.1 基本数据类型
2.3.2 常量
2.3.3 变量
2.3.4 整型数据
2.3.5 浮点型数据
2.3.6 字符型数据
2.3.7 布尔型数据
2.3.8 变量赋初值
2.3.9 变量的作用域
2.3.10 数据类型转换
2.4 运算符与表达式
2.4.1 算术运算符和算术表达式
2.4.2 关系运算符和关系表达式
2.4.3 逻辑运算符和逻辑表达式
2.4.4 条件运算符和条件表达式
2.4.5 位运算符和位表达式
2.4.6 赋值运算符和赋值表达式
2.4.7 表达式的求值顺序
2.5 流程控制语句
2.5.1 3种基本控制结构
2.5.2 表达式语句和空语句
2.5.3 块语句
2.5.4 if~else分支语句
2.5.5 多路分支switch~case语句
2.5.6 当型循环while语句
2.5.7 直到型循环do~while语句
2.5.8 当型循环for语句
2.5.9 增强的for循环
2.5.10 循环的嵌套
2.5.11 跳转语句break
2.5.12 跳转语句continue
2.6 Java基础语法实战演习
2.6.1 判断闰年
2.6.2 求最大公约数和最小公倍数
2.6.3 Fibonacci数列
2.6.4 逆向输出数字
2.6.5 求水仙花数
2.6.6 输出图形
2.6.7 输出九九口诀表
2.7 本章小结
2.8 实战习题
第2篇 Java面向对象编程
第3章 对象和类( 教学视频:33分钟)
3.1 什么是面向对象
3.1.1 对象的理解
3.1.2 什么是类
3.1.3 消息的定义
3.1.4 面向对象的基本特征
3.2 类与对象
3.2.1 类的基本结构
3.2.2 类的声明
3.2.3 创建类体
3.2.4 对象的生命周期
3.2.5 对象的创建
3.2.6 对象的使用
3.3 成员变量的定义与使用
3.3.1 成员变量的定义
3.3.2 成员变量的访问权限
3.3.3 实例成员变量和静态成员变量
3.4 方法的定义和实现
3.4.1 方法的声明
3.4.2 创建方法体与return语句
3.4.3 局部变量和成员变量的区别
3.4.4 方法的访问权限
3.5 方法的调用
3.5.1 方法调用的形式
3.5.2 方法调用的参数
3.5.3 隐含参数this
3.6 构造方法
3.6.1 无参数构造方法的定义和使用
3.6.2 带参数构造方法的定义和使用
3.6.3 this关键字和构造方法的调用
3.7 静态方法
3.7.1 静态方法的声明和定义
3.7.2 静态方法和实例方法的区别
3.7.3 静态代码块
3.7.4 再论静态成员变量
3.8 main()方法和命令行参数
3.9 终结处理与垃圾回收
3.9.1 对象的释放和垃圾收集机制
3.9.2 finalize()终结处理方法
3.9.3 Java垃圾回收的工作原理
3.10 本地方法
3.11 本章小结
3.12 实战习题
第4章 继承与多态( 教学视频:35分钟)
4.1 继承的概念
4.1.1 继承的基本原理
4.1.2 Java继承的特征
4.1.3 Java中子类继承父类的描述及实现
4.1.4 Java继承的内存形态
4.2 继承中属性隐藏与方法覆盖
4.2.1 属性的隐藏
4.2.2 方法的覆盖
4.3 构造方法的继承与调用
4.3.1 构造方法的继承
4.3.2 super关键字的使用
4.3.3 关于子类继承父类的总结
4.4 多态技术
4.4.1 Java中的多态
4.4.2 重载与覆盖
4.4.3 运行时多态
4.5 接口与多重继承
4.5.1 接口的定义
4.5.2 接口的继承
4.5.3 接口的实现
4.6 Java抽象类与最终类
4.6.1 抽象类与抽象方法
4.6.2 最终类与最终方法
4.7 Java内部类
4.7.1 内部类的定义
4.7.2 内部类访问外部类的成员
4.7.3 内部类之间的相互使用
4.7.4 在外部使用内部类
4.7.5 匿名内部类
4.7.6 内部类的作用
4.8 Java包:库单元
4.8.1 包的创建
4.8.2 包的使用
4.8.3 JAR文件的创建和使用
4.8.4 JDK中的常用包
4.9 本章小结
4.10 实战习题
第3篇 Java数据处理
第5章 数组与字符串( 教学视频:69分钟)
5.1 数组
5.1.1 一维数组的声明
5.1.2 一维数组的创建
5.1.3 一维数组的使用
5.1.4 二维数组的声明
5.1.5 二维数组的创建
5.1.6 二维数组的使用
5.1.7 程序示例1——数组排序
5.1.8 程序示例2——杨辉三角
5.2 字符串
5.2.1 String对象的声明
5.2.2 String对象的创建
5.2.3 String对象的使用
5.2.4 String类型的数组
5.2.5 StringBuffer对象的声明
5.2.6 StringBuffer对象的创建
5.2.7 StringBuffer对象的使用
5.3 本章小结
5.4 实战习题
第6章 Java的异常处理( 教学视频:58分钟)
6.1 异常与异常处理
6.1.1 异常的特点
6.1.2 异常处理的两种模型
6.1.3 异常处理在编程中的优点
6.2 Java的异常处理
6.2.1 Java的异常处理机制
6.2.2 Java异常类的层次结构
6.2.3 Java异常的分类
6.2.4 Java异常处理的原则
6.3 Java异常处理实践
6.3.1 Java异常捕获与处理
6.3.2 异常的抛出
6.3.3 异常的嵌套处理
6.3.4 自定义异常及其处理方法
6.3.5 Java异常处理的应用示例
6.4 本章小结
6.5 实战习
第7章 Java输入输出处理技术( 教学视频:110分钟)
第4篇 Java中的高级技术
第8章 Java的多线程机制( 教学视频:83分钟)
第9章 运行时类型识别( 教学视频:37分钟)
第10章 泛型( 教学视频:18分钟)
第11章 Java集合框架( 教学视频:20分钟)
第12章 类型包装器、自动装箱和元数据( 教学视频:21分钟)
第13章 常用工具类( 教学视频:74分钟)
第5篇 桌面程序开发
第14章 GUI程序设计( 教学视频:29分钟)
第15章 Java多媒体编程应用( 教学视频:16分钟)
第6篇 数据库程序设计
第16章 数据库基础( 教学视频:47分钟)
第17章 Java数据库编程技术( 教学视频:110分钟)
第7篇 Java网络程序开发
第18章 Java网络编程技术( 教学视频:78分钟)
第19章 JSP程序设计( 教学视频:42分钟)
*第8篇 即时通信系统开发项目实战
第20章 系统分析和设计( 教学视频:27分钟)
第21章 服务器端功能模块的实现( 教学视频:19分钟)
第22章 客户端功能模块的实现( 教学视频:25分钟)
说明:因篇幅所限,第8篇内容以PDF电子文档的格式收录于本书的配书光盘中赠送给读者,读者可以选择阅读。该项目案例涉及的源程序及视频讲解也收录于配书光盘中。