Java 程序设计大学教程 刘艺编著 Java 程序设计大学教程 Java Programming for The College Students 机械工业出版社 hina machine press 刘艺作品试
刘艺作品试读 Java 程序设计大学教程 刘艺 编著 刘艺作品试读
前言 欢迎进入Java的世界学习计算机程序设计课程。这将是一次美妙和激动人心的探索 可能将为你今后从事的充满挑战和令人兴奋的职业奠定软件编程的基础。因为众所周知计算 机在我们的日常生活中扮演了一个重要的角色而且在未来也将一 计算机科学是一个充满了挑战和发展机遇的年轻学科,而计算机程序设计则是这门学科 的重要基础。随着计算机在各行各业的广泛应用,很多非计算机专业的课程设置中也把计算 机程序设计列为公共基础课之 既然是作为基础课的教材,那么本书所假定的读者可以既不具有程序设计经验,也没有 面向对象技术的概念和Web程序设计知识,甚至没有太多的计算机知识。即使是一个对计 算机一无所知的人,也将能通过一天天学习本书而获取所有有关的基本知识,了解和掌握程 序设计。如果读者是一位很有经验的程序员,已在其它程序设计语言中掌握了一定的开发技 能,也能在本书中发现很多有用的信息。 本书与程序设计课程 计算机程序设计既是一门概念复杂,知识面广的理论课,也是一门面向实战、需要动手 的实践课。几乎所有的初学编程者都梦想着有朝一日能在计算机上驰骋,让一行行程序在自 己敲击键盘的手下源源不断地流出,真正成为驾驭计算机的主人。然而,学完程序设计课程 后,实际开始编写程序时,却往往会觉得难以下手、无所适从。尽管自己刻苦学习,高分通 过考试,但并不能体会到所学知识给实际编程带来的便利和优势 为什么会这样?一方面原因是我们的学生在学习时没有掌握程序设计的一般过程,没有 深入了解通用程序设计语言的本质规律。另一方面是我们的教学体制僵化、教材陈旧,教学 思想和内容跟不上时代的发展,与软件开发实际情况脱节 计算机程序设计语言是一种实现对计算机操作和控制的人造语言,与人类的自然语言有 定差距。程序设计语言仅仅是程序设计的手段和途径而并不是程序设计全部。因此,掌握 程序设计语言并不意味着就精通程序设计,就能写出优秀的程序。实际上,程序设计所涉及 的领域、知识和技能要远远超出我们的想象。因此本教材对于程序设计课程在一些方面有着 自己不同的理解: 程序设计首先是一个过程 程序设计过程通常分为问题建模、算法设计、编写代码和编译调试等4个阶段。不同阶 段的任务是相对独立的,不能混为一谈。即使是一个比较简单的程序,我们也应该养成先分 析,再下手,最后调试的习惯,严格遵循程序设计过程。因为在缺乏对问题深入、全面分析 的情况下,就匆匆动手编写程序,将会增加失败的风险,带来后期修改、维护的麻烦。因此 学习程序设计,不但不能回避程序设计过程,更要从软件开发过程和软件生命周期的高度来 了解和掌握程序设计过程,从一开始就要养成遵从程序设计准则从事程序设计的良好习惯。 有别于其他程序设计教材,本书强调程序设计过程和软件开发过程的重要性,为读者介绍了 有关软件建模与测试的基本原理和技术。特别考虑到现代软件开发依赖于集体合作和项目管
前 言 欢迎进入 Java 的世界学习计算机程序设计课程。这将是一次美妙和激动人心的探索, 可能将为你今后从事的充满挑战和令人兴奋的职业奠定软件编程的基础。因为众所周知计算 机在我们的日常生活中扮演了一个重要的角色而且在未来也将一样。 计算机科学是一个充满了挑战和发展机遇的年轻学科,而计算机程序设计则是这门学科 的重要基础。随着计算机在各行各业的广泛应用,很多非计算机专业的课程设置中也把计算 机程序设计列为公共基础课之一。 既然是作为基础课的教材,那么本书所假定的读者可以既不具有程序设计经验,也没有 面向对象技术的概念和 Web 程序设计知识,甚至没有太多的计算机知识。即使是一个对计 算机一无所知的人,也将能通过一天天学习本书而获取所有有关的基本知识,了解和掌握程 序设计。如果读者是一位很有经验的程序员,已在其它程序设计语言中掌握了一定的开发技 能,也能在本书中发现很多有用的信息。 本书与程序设计课程 计算机程序设计既是一门概念复杂,知识面广的理论课,也是一门面向实战、需要动手 的实践课。几乎所有的初学编程者都梦想着有朝一日能在计算机上驰骋,让一行行程序在自 己敲击键盘的手下源源不断地流出,真正成为驾驭计算机的主人。然而,学完程序设计课程 后,实际开始编写程序时,却往往会觉得难以下手、无所适从。尽管自己刻苦学习,高分通 过考试,但并不能体会到所学知识给实际编程带来的便利和优势。 为什么会这样?一方面原因是我们的学生在学习时没有掌握程序设计的一般过程,没有 深入了解通用程序设计语言的本质规律。另一方面是我们的教学体制僵化、教材陈旧,教学 思想和内容跟不上时代的发展,与软件开发实际情况脱节。 计算机程序设计语言是一种实现对计算机操作和控制的人造语言,与人类的自然语言有 一定差距。程序设计语言仅仅是程序设计的手段和途径而并不是程序设计全部。因此,掌握 程序设计语言并不意味着就精通程序设计,就能写出优秀的程序。实际上,程序设计所涉及 的领域、知识和技能要远远超出我们的想象。因此本教材对于程序设计课程在一些方面有着 自己不同的理解: 程序设计首先是一个过程 程序设计过程通常分为问题建模、算法设计、编写代码和编译调试等 4 个阶段。不同阶 段的任务是相对独立的,不能混为一谈。即使是一个比较简单的程序,我们也应该养成先分 析,再下手,最后调试的习惯,严格遵循程序设计过程。因为在缺乏对问题深入、全面分析 的情况下,就匆匆动手编写程序,将会增加失败的风险,带来后期修改、维护的麻烦。因此 学习程序设计,不但不能回避程序设计过程,更要从软件开发过程和软件生命周期的高度来 了解和掌握程序设计过程,从一开始就要养成遵从程序设计准则从事程序设计的良好习惯。 有别于其他程序设计教材,本书强调程序设计过程和软件开发过程的重要性,为读者介绍了 有关软件建模与测试的基本原理和技术。特别考虑到现代软件开发依赖于集体合作和项目管
理,是汇集了很多程序设计过程的更大的过程。因此,除了在书中增加有关软件过程实施和 管理的介绍外,还把如何撰写规范的程序代码作为重要一节,使得读者在学习程序设计之初 就了解程序设计的规范,注重编写程序的规范性、正确性和可靠性,对于培养将来参与大型 软件开发所需要的分工合作团队成员十分重要 程序设计还是一种解决问题的方法和能力 程序设计课程主要是学习用计算机解决问题的思考方法,培养编程应用能力,而不是仅 仅学会某个程序设计语言的语法规则。很多学生能弄清楚循环、i-else结构以及算术表达式, 但很难把一个编程问题分解成结构良好的Java程序。还有误人子弟的教材,不用面向对象 的思想、方法去讲Java,而是用变量、过程、函数等老概念来硬套Java语法,使学生不会 利用面向对象语言的优势来解决问题。这些都暴露了程序设计教学中偏重语法细节,忽略总 体思想方法和整体过程实现的问题 尽管程序设计理论的发展为解决问题提供了很多有效方法,但对于初学者而言学习Java 的捷近应该是抓住最核心的思想方法:面向对象方法。为实现这个目的,我们把面向对象分 析和设计作为重点,围绕面向对象的抽象性、继承性、多态性和封装性这4个本质特点阐述 面向对象程序设计的基本方法。通过强调基本概念、基本方法、基本应用,并结合案例教学 我们旨在为初学者奠定扎实的程序设计基础,树立良好的编程思想。通过大量的实例分析和 范例程序设计过程演示,我们力图给初学者建立完整印象,培养其从整体上思考问题和解决 问是 题的编程能力 程序设计最终是对程序设计语言的应用 程序设计和程序设计语言存在着有趣的辩证关系。程序设计可以用不同的程序设计语言 来实现,但是不同的程序设计语言又决定着能使用怎样的程序设计思想方法和技术技巧,制 约着程序设计的实现能力和效率。本书使用Java作为学习程序设计的语言,是因为Java不 但继承了C语言简洁优美的风格,而且还具有面向对象语言的真正优势。更可喜的是Java 还在继续发展,不断吸取现代编程语言的精华。这一切使得Java具备现代通用程序设计语 言的主流特征,特别适合跨平台的编程使用。因此学习Java语言,掌握Java程序设计方法 是本课程的另一个重要任务。 本书虽然以Java语言为背景介绍程序设计语言的相关知识,但是重点强调的是一些通 用的思想方法,而不是对Java语言及其类库的全面介绍。读者应该注意到,不同的程序设 计语言其语法和风格可能迥异,但无论哪一种语言,都是以数据(类型)、操作(运算)、控 制(逻辑流程)为基本内容。更进一步讲,学习一门程序设计语言,应该超越语言的具体表 述格式,不拘泥于繁芜的语法现象,而是站在抽象的高度,掌握程序设计的基本概念,深入 了解程序设计语言的本质规律。这样将会为深入学习其他程序设计语言带来便利。 本书的结构 这本书是为计算机程序设计课程编写的。该课程对于理工科类的大学相当于公共外语那 样的公共基础课,它通过讲授一门具体的计算机语言,来帮助学生掌握程序设计的基础知识 和基本应用。同时,对于未接触过计算机科学的学生,这本书还涉及和介绍了与程序设计相
理,是汇集了很多程序设计过程的更大的过程。因此,除了在书中增加有关软件过程实施和 管理的介绍外,还把如何撰写规范的程序代码作为重要一节,使得读者在学习程序设计之初 就了解程序设计的规范,注重编写程序的规范性、正确性和可靠性,对于培养将来参与大型 软件开发所需要的分工合作团队成员十分重要。 程序设计还是一种解决问题的方法和能力 程序设计课程主要是学习用计算机解决问题的思考方法,培养编程应用能力,而不是仅 仅学会某个程序设计语言的语法规则。很多学生能弄清楚循环、if-else 结构以及算术表达式, 但很难把一个编程问题分解成结构良好的 Java 程序。还有误人子弟的教材,不用面向对象 的思想、方法去讲 Java,而是用变量、过程、函数等老概念来硬套 Java 语法,使学生不会 利用面向对象语言的优势来解决问题。这些都暴露了程序设计教学中偏重语法细节,忽略总 体思想方法和整体过程实现的问题。 尽管程序设计理论的发展为解决问题提供了很多有效方法,但对于初学者而言学习 Java 的捷近应该是抓住最核心的思想方法:面向对象方法。为实现这个目的,我们把面向对象分 析和设计作为重点,围绕面向对象的抽象性、继承性、多态性和封装性这 4 个本质特点阐述 面向对象程序设计的基本方法。通过强调基本概念、基本方法、基本应用,并结合案例教学, 我们旨在为初学者奠定扎实的程序设计基础,树立良好的编程思想。通过大量的实例分析和 范例程序设计过程演示,我们力图给初学者建立完整印象,培养其从整体上思考问题和解决 问题的编程能力。 程序设计最终是对程序设计语言的应用 程序设计和程序设计语言存在着有趣的辩证关系。程序设计可以用不同的程序设计语言 来实现,但是不同的程序设计语言又决定着能使用怎样的程序设计思想方法和技术技巧,制 约着程序设计的实现能力和效率。本书使用 Java 作为学习程序设计的语言,是因为 Java 不 但继承了 C 语言简洁优美的风格,而且还具有面向对象语言的真正优势。更可喜的是 Java 还在继续发展,不断吸取现代编程语言的精华。这一切使得 Java 具备现代通用程序设计语 言的主流特征,特别适合跨平台的编程使用。因此学习 Java 语言,掌握 Java 程序设计方法 是本课程的另一个重要任务。 本书虽然以 Java 语言为背景介绍程序设计语言的相关知识,但是重点强调的是一些通 用的思想方法,而不是对 Java 语言及其类库的全面介绍。读者应该注意到,不同的程序设 计语言其语法和风格可能迥异,但无论哪一种语言,都是以数据(类型)、操作(运算)、控 制(逻辑流程)为基本内容。更进一步讲,学习一门程序设计语言,应该超越语言的具体表 述格式,不拘泥于繁芜的语法现象,而是站在抽象的高度,掌握程序设计的基本概念,深入 了解程序设计语言的本质规律。这样将会为深入学习其他程序设计语言带来便利。 本书的结构 这本书是为计算机程序设计课程编写的。该课程对于理工科类的大学相当于公共外语那 样的公共基础课,它通过讲授一门具体的计算机语言,来帮助学生掌握程序设计的基础知识 和基本应用。同时,对于未接触过计算机科学的学生,这本书还涉及和介绍了与程序设计相
关的计算机科学知识。全书由程序设计基础、面向对象程序设计、算法与数据结构、Java 应用程序与aplt程序设计、程序设计高级话题等5个部分组成本书的核心知识,并涉及计 算机基础、数据和控制、程序设计理论、软件工程知识等四大知识领域,汇集18个相关知 识点。虽然在本书中讨论的内容有一定的理论性,但这些理论都是用实际程序问题表达的 是为了帮助读者建立完整的程序设计知识体系结构 本书的组织结构如下图所示,其中有些知识点是通过各章节的迭代,循序渐进,不断深 入的 十算机结构 本书的 组织结构 数据和数据处理 计算机 基础 内存、堆栈 第1章绪论 数据类型 程序设计 算法及实现 第2章程序设计基础 数据结构 数据组织 和控制 面向对象 第3章向对象与对象模型 抽象数据类型 程序设计 数据集(对象集) 第4章面向对象程序设计 程序设计语言概论」 算法与 第5章算法与数据结构 程序设计方法 数据结构 程序设计 面向对象方法 理论 第6章图形用户界面 可视化程序设计」 图形用户界面技术 第7章程序设计案例分析 程序设计 b编程技术 第8章 applet与web编程 软件生命周期 软件开发过程软件工程 第9章开发过程与程序质量保证 知识 程序设计 软件测试与调试」 高级话题 第10章线程、文件与串行化 面向对象分析与 LML建模 图P1本书组织结构与知识点 本书分为10章,各章的主要内容如下: ·第1章绪论介绍程序设计的基本概念和初步认识Java。重点帮助读者搞清什么 是计算机程序、程序设计、程序设计语言等基本概念。同时介绍Java程序的编写、 编译和运行,以及相关的环境设置和工具使用 第2章程序设计基础这一章首先通过一个简单的Java程序来了解程序的组成结 构、语言要素和编写规范,建立程序的基本概念。然后以数据和运算作为程序设计 的基础,通过讲解数据和数据类型、变量和常量、表达式和运算符以及流程控制, 开始Java程序设计语言的探索之旅。 ·第3章面向对象与对象模型介绍面向对象的概念和对象建模的方法,讲解Java 对象模型中的核心部分:类及类的成员。使读者学会如何用创建和使用Java对象。 ·第4章面向对象程序设计本章将站在面向对象程序设计原则和方法的高度,围 绕抽象性、继承性、多态性和封装性4个特点讲解面向对象程序设计的基本方法
关的计算机科学知识。全书由程序设计基础、面向对象程序设计、算法与数据结构、Java 应用程序与 applet 程序设计、程序设计高级话题等 5 个部分组成本书的核心知识,并涉及计 算机基础、数据和控制、程序设计理论、软件工程知识等四大知识领域,汇集 18 个相关知 识点。虽然在本书中讨论的内容有一定的理论性,但这些理论都是用实际程序问题表达的, 是为了帮助读者建立完整的程序设计知识体系结构。 本书的组织结构如下图所示,其中有些知识点是通过各章节的迭代,循序渐进,不断深 入的: 图 P.1 本书组织结构与知识点 本书分为 10 章,各章的主要内容如下: • 第 1 章 绪论 介绍程序设计的基本概念和初步认识 Java。重点帮助读者搞清什么 是计算机程序、程序设计、程序设计语言等基本概念。同时介绍 Java 程序的编写、 编译和运行,以及相关的环境设置和工具使用。 • 第 2 章 程序设计基础 这一章首先通过一个简单的 Java 程序来了解程序的组成结 构、语言要素和编写规范,建立程序的基本概念。然后以数据和运算作为程序设计 的基础,通过讲解数据和数据类型、变量和常量、表达式和运算符以及流程控制, 开始 Java 程序设计语言的探索之旅。 • 第 3 章 面向对象与对象模型 介绍面向对象的概念和对象建模的方法,讲解 Java 对象模型中的核心部分:类及类的成员。使读者学会如何用创建和使用 Java 对象。 • 第 4 章 面向对象程序设计 本章将站在面向对象程序设计原则和方法的高度,围 绕抽象性、继承性、多态性和封装性 4 个特点讲解面向对象程序设计的基本方法
重点讨论继承、多态和接口的编程 第5章算法与数据结构介绍算法的概念及常用算法。并通过数组、链表、栈 队列等数据结构以及Java对象容器,讨论算法的应用及算法的Java程序实现 ·第6章图形用户界面讲解Java图形界面应用程序的一般设计方法,包括如何创 建窗体、设计界面、管理布局、绘制图形、使用组件、事件编程等。通过这一章的 习可以掌握图形用户界面应用程序的设计方法和编程技 ·第7章程序设计案例分析通过剖析和研究一个典型的Java应用程序设计案例 读者不仅可以对窗体、菜单、组件、事件、布局等的设计有一个感性的综合的了解, 还可以进一步理解Java应用程序的基本架构和完整设计过程,掌握使用开发工具 ( NetBeans IDE)完成程序设计项目的一般过程和方法,积累实际编程经验。同时 还可学会利用 NetBeans IDE的可视化设计功能提高程序设计效率。 ·第8章 applet与web编程本章详细讲述 applet的原理、特性、安全机制以及编 程方法,并讨论 applet在web编程中的应用。同时还介绍了web编程的一些有用 ·第9章开发过程与程序质量保证介绍软件的开发过程及过程的实施管理,从程 序质量保证的高度讨论了程序的调试与测试,重点讲述了Java程序的调试方法 程序中的异常处理以及单元测试方法。 第10章线程、文件与串行化本章将讨论有关线程及输入输出的一些高级话题。 通过本章的学习,读者可以了解多任务、进程和线程、线程模型、流、文件、输入 /输出、对象串行化等诸多概念和编程方法,为Java的高级应用打下基础。 尽管本书包含了以上章节内容,但实际的教学进度和授课内容可以灵活确定,因为这要 取决于课堂教学的安排或读者实际技能及对所讨论问题的熟悉程度。教学时数建议安排在 0-~80课时之间。 本书的读者对象 程序设计入门学生,选用本书作为程序设计基础教材,希望掌握一门优秀、实用、 主流的程序设计语言,为深入学习其它计算机课程奠定基础。显然Java作为一种 跨平台的面向对象编程语言能胜任教学的需要,为学习程序设计提供更全面的知识 结构体系。 ·因工作或科研需要的非专业编程人员,希望迅速掌握Java编程以完成不太复杂的 编程任务 ·非计算机专业的编程爱好者,改行从事程序员工作,有一些实际的Java编程经验 但没有系统学习过相关专业知识。希望通过本书重温程序设计知识,补习相关概念 和理论 有一定经验的程序员,已在其它编程语言及其软件环境中掌握了一定的开发技能, 但没有使用过Java语言或对Java语言一知半解。希望在本书中系统学习Java程序 设计,发现Java与其所熟悉语言的不同点,并由此掌握Java语言。 本书的特色 本书的一些特色不仅使得本书与众不同,同时也特别有助于入门者去学习
重点讨论继承、多态和接口的编程。 • 第 5 章 算法与数据结构 介绍算法的概念及常用算法。并通过数组、链表、栈、 队列等数据结构以及 Java 对象容器,讨论算法的应用及算法的 Java 程序实现。 • 第 6 章 图形用户界面 讲解 Java 图形界面应用程序的一般设计方法,包括如何创 建窗体、设计界面、管理布局、绘制图形、使用组件、事件编程等。通过这一章的 学习可以掌握图形用户界面应用程序的设计方法和编程技巧。 • 第 7 章 程序设计案例分析 通过剖析和研究一个典型的 Java 应用程序设计案例, 读者不仅可以对窗体、菜单、组件、事件、布局等的设计有一个感性的综合的了解, 还可以进一步理解 Java 应用程序的基本架构和完整设计过程,掌握使用开发工具 (NetBeans IDE)完成程序设计项目的一般过程和方法,积累实际编程经验。同时 还可学会利用 NetBeans IDE 的可视化设计功能提高程序设计效率。 • 第 8 章 applet 与 Web 编程 本章详细讲述 applet 的原理、特性、安全机制以及编 程方法,并讨论 applet 在 web 编程中的应用。同时还介绍了 web 编程的一些有用 知识。 • 第 9 章 开发过程与程序质量保证 介绍软件的开发过程及过程的实施管理,从程 序质量保证的高度讨论了程序的调试与测试,重点讲述了 Java 程序的调试方法、 程序中的异常处理以及单元测试方法。 • 第 10 章 线程、文件与串行化 本章将讨论有关线程及输入/输出的一些高级话题。 通过本章的学习,读者可以了解多任务、进程和线程、线程模型、流、文件、输入 /输出、对象串行化等诸多概念和编程方法,为 Java 的高级应用打下基础。 尽管本书包含了以上章节内容,但实际的教学进度和授课内容可以灵活确定,因为这要 取决于课堂教学的安排或读者实际技能及对所讨论问题的熟悉程度。教学时数建议安排在 50~80 课时之间。 本书的读者对象 • 程序设计入门学生,选用本书作为程序设计基础教材,希望掌握一门优秀、实用、 主流的程序设计语言,为深入学习其它计算机课程奠定基础。显然 Java 作为一种 跨平台的面向对象编程语言能胜任教学的需要,为学习程序设计提供更全面的知识 结构体系。 • 因工作或科研需要的非专业编程人员,希望迅速掌握 Java 编程以完成不太复杂的 编程任务。 • 非计算机专业的编程爱好者,改行从事程序员工作,有一些实际的 Java 编程经验, 但没有系统学习过相关专业知识。希望通过本书重温程序设计知识,补习相关概念 和理论。 • 有一定经验的程序员,已在其它编程语言及其软件环境中掌握了一定的开发技能, 但没有使用过 Java 语言或对 Java 语言一知半解。希望在本书中系统学习 Java 程序 设计,发现 Java 与其所熟悉语言的不同点,并由此掌握 Java 语言。 本书的特色 本书的一些特色不仅使得本书与众不同,同时也特别有助于入门者去学习
概念和知识面 贯穿本书,我们始终强调概念要比数学模型更重要,我们认为对概念的理解必然左右对 模型的理解,概念与模型的结合可以帮助读者更好地掌握所学内容。同时,我们还特别注意 开阔读者的知识面,使读者能够站在现代软件开发和软件工程这个比较开阔的层面上了解程 序设计,而不是局限于繁琐的程序设计语言规则上。为此,我们在全书中贯穿了软件工程的 思想,使用了诸如UML建模、单元测试等与程序设计相关的软件工程实用方法 代码编写和工具使用能力并重 初学Java程序设计的人,大多数会被Java强大的功能所吸引,同时也被Java的代码编 写难度所吓倒。传统的教材让学生使用记事本那样的简单文本编辑器撰写Java程序,并在 控制台中通过命令行编译和调试程序,无形之中增加了初学者学习的难度,这种方法在本教 材中并不提倡。选用优秀的Java集成开发环境(IDE)作为教学平台,一方面可以帮助初学 者发现代码错误(包括难以察觉的拼写错误),方便程序的调试和编译:另一方面可以让学 生了解软件的实际开发环境,学会利用工具来提高学习和编程的效率 鉴于快速应用开发(RAD)的思想正在改变程序设计的方法,而高效率的可视化程序设计 实际上已经重造了开发者的工作平台。以前编写Java程序是通过基于字符的编辑器键入 条条语句的方法,现在某些优秀的 Java Ide也能像 Delphi、VB那样支持我们交互式地在窗 体上点击和拖放( click-and-drop)组件,并使用短小精悍的代码段连接它们。过去,即使是 开发很小的Java图形界面应用程序,也需要很多细心而且繁杂的基础工作,先写出非常长 的源代码文件,然后才可编译和测试其结果。 Java Ide工具的出现和不断发展改变了这种模 式。本教材中,我们采用SUN公司的开源IDE工具 NetBeans,在强调编程能力的同时,我 们鼓励学生使用IDE工具来提高程序设计的效率和质量。 鼓励学生使用IDE工具并不是削弱他们编写代码的能力,更不是宣扬那种无须写任何 程序就可以用控件组装应用程序的神话。而是为了让学生把精力用于学习程序设计上,而不 是浪费在繁琐的配置、设置、调试和重复输入字符上。其实这也是IDE工具进化的目标之 即让程序员面对真正的程序设计任务,而不是浪费在窗口的几个GUI组件上或繁琐的 手工调试上,程序员的创造力应该体现在结构优良,性能出众,稳定可靠,易于扩展的程序 设计上。 真正的程序设计需要很多知识、技能和创造力。基于IDE工具的可视化程序设计只是 手段不是重点。即使是在GUI界面的设计中,我们也同时采用了可视化程序设计和非可视 化程序设计两种实践,以便读者学习、比较。因为本书的重点仍然在学习程序设计语言的本 质,培养代码的编写能力。这与强调代码编写和工具使用能力并重并不矛盾。 图文并茂 阅读本书后将会发现本书图文并茂。全书有100多幅精心设计的图片,这些图片可以帮 助读者增进对文字的理解
概念和知识面 贯穿本书,我们始终强调概念要比数学模型更重要,我们认为对概念的理解必然左右对 模型的理解,概念与模型的结合可以帮助读者更好地掌握所学内容。同时,我们还特别注意 开阔读者的知识面,使读者能够站在现代软件开发和软件工程这个比较开阔的层面上了解程 序设计,而不是局限于繁琐的程序设计语言规则上。为此,我们在全书中贯穿了软件工程的 思想,使用了诸如 UML 建模、单元测试等与程序设计相关的软件工程实用方法。 代码编写和工具使用能力并重 初学 Java 程序设计的人,大多数会被 Java 强大的功能所吸引,同时也被 Java 的代码编 写难度所吓倒。传统的教材让学生使用记事本那样的简单文本编辑器撰写 Java 程序,并在 控制台中通过命令行编译和调试程序,无形之中增加了初学者学习的难度,这种方法在本教 材中并不提倡。选用优秀的 Java 集成开发环境(IDE)作为教学平台,一方面可以帮助初学 者发现代码错误(包括难以察觉的拼写错误),方便程序的调试和编译;另一方面可以让学 生了解软件的实际开发环境,学会利用工具来提高学习和编程的效率。 鉴于快速应用开发(RAD)的思想正在改变程序设计的方法,而高效率的可视化程序设计 实际上已经重造了开发者的工作平台。以前编写 Java 程序是通过基于字符的编辑器键入一 条条语句的方法,现在某些优秀的 Java IDE 也能像 Delphi、VB 那样支持我们交互式地在窗 体上点击和拖放(click-and-drop)组件,并使用短小精悍的代码段连接它们。过去,即使是 开发很小的 Java 图形界面应用程序,也需要很多细心而且繁杂的基础工作,先写出非常长 的源代码文件,然后才可编译和测试其结果。Java IDE 工具的出现和不断发展改变了这种模 式。本教材中,我们采用 SUN 公司的开源 IDE 工具 NetBeans,在强调编程能力的同时,我 们鼓励学生使用 IDE 工具来提高程序设计的效率和质量。 鼓励学生使用 IDE 工具并不是削弱他们编写代码的能力,更不是宣扬那种无须写任何 程序就可以用控件组装应用程序的神话。而是为了让学生把精力用于学习程序设计上,而不 是浪费在繁琐的配置、设置、调试和重复输入字符上。其实这也是 IDE 工具进化的目标之 一,即让程序员面对真正的程序设计任务,而不是浪费在窗口的几个 GUI 组件上或繁琐的 手工调试上,程序员的创造力应该体现在结构优良,性能出众,稳定可靠,易于扩展的程序 设计上。 真正的程序设计需要很多知识、技能和创造力。基于 IDE 工具的可视化程序设计只是 手段不是重点。即使是在 GUI 界面的设计中,我们也同时采用了可视化程序设计和非可视 化程序设计两种实践,以便读者学习、比较。因为本书的重点仍然在学习程序设计语言的本 质,培养代码的编写能力。这与强调代码编写和工具使用能力并重并不矛盾。 图文并茂 阅读本书后将会发现本书图文并茂。全书有 100 多幅精心设计的图片,这些图片可以帮 助读者增进对文字的理解
示例程序 本书尽可能地运用示例程序来表述概念和模型,同时尽量提供完整的范例程序和程序设 计过程。本书所有示例程序和习题中的程序都已在JDK1.5中编译运行通过,建议读者在学 习时选择Java2标准版JDK1.5的版本 习题 每一章的结尾都包括本章习题。本章小结包括了对本章中所有关键内容和知识点的简明 概括,是复习时的参考。本章习题包括了三部分内容:复习题,测试题和练习题 ·复习题:测试本章中所有的要点和概念,帮助学生复习巩固重点内容。 测试题:通过多项选择题,客观地测试学生对所学知识的理解和掌握程度 练习题:通过课后练习题,检查学生能否运用掌握的概念和知识独立思考,解决问 题。 本教材配有专用的习题解答及课程设计教辅书籍《Java程序设计大学教程习题解答与课 程设计》 CC2004课程体系 从1990年开始,美国电气和电子工程师协会计算机社团( the Computer Society of the Institute for Electrical and Electronic engineers,简称IEEE-CS)和计算机学会( Association for Computing Machinery,简称ACM)就着手开发新的本科生计算机课程体系。1991年联合推 出了 Computing Curricula991(简称CC1991),当时仅限于 Computer Science和 Computer Engineering两个专业的课程。1998年秋季开始, IEEE-CS和ACM联合投入新的力量更新 该课程体系,并在2001年开发出 Computing Curricula2001(简称CC2001),并将该计算机 课程体系扩大到 Computer Science、 Computer Engineering、 Software Engineering、 Information Systems等多个专业。在CC2001的实施中,专家们发现,计算机课程所涉及的学科专业和 教学范围正在不断扩大,而且在内容和教学方面的变化也日新月异。 IEEE-CS和ACM意识 到10年一次的 Computing Curricula修订已经难以满足要求,于是联合国际信息处理联合会 ( International Federation for Information Processing,简称IIP)、英国计算机协会( British Computer Society,简称BCS)等更多的组织开发了 Computing Curricula2004(简称CC2004), 使之成为开放的、可扩充的、适合多专业的、整合了计算机教学相关原则体系观点的课程体 系指南。其结构参见下图
示例程序 本书尽可能地运用示例程序来表述概念和模型,同时尽量提供完整的范例程序和程序设 计过程。本书所有示例程序和习题中的程序都已在 JDK 1.5 中编译运行通过,建议读者在学 习时选择 Java 2 标准版 JDK 1.5 的版本。 习题 每一章的结尾都包括本章习题。本章小结包括了对本章中所有关键内容和知识点的简明 概括,是复习时的参考。本章习题包括了三部分内容:复习题,测试题和练习题。 • 复习题:测试本章中所有的要点和概念,帮助学生复习巩固重点内容。 • 测试题:通过多项选择题,客观地测试学生对所学知识的理解和掌握程度。 • 练习题:通过课后练习题,检查学生能否运用掌握的概念和知识独立思考,解决问 题。 本教材配有专用的习题解答及课程设计教辅书籍《Java 程序设计大学教程习题解答与课 程设计》。 CC2004 课程体系 从 1990 年开始,美国电气和电子工程师协会计算机社团(the Computer Society of the Institute for Electrical and Electronic Engineers,简称 IEEE-CS)和计算机学会(Association for Computing Machinery,简称 ACM)就着手开发新的本科生计算机课程体系。1991 年联合推 出了 Computing Curricula1991(简称 CC1991),当时仅限于 Computer Science 和 Computer Engineering 两个专业的课程。1998 年秋季开始,IEEE-CS 和 ACM 联合投入新的力量更新 该课程体系,并在 2001 年开发出 Computing Curricula2001(简称 CC2001),并将该计算机 课程体系扩大到 Computer Science、Computer Engineering、Software Engineering、Information Systems 等多个专业。在 CC2001 的实施中,专家们发现,计算机课程所涉及的学科专业和 教学范围正在不断扩大,而且在内容和教学方面的变化也日新月异。IEEE-CS 和 ACM 意识 到 10 年一次的 Computing Curricula 修订已经难以满足要求,于是联合国际信息处理联合会 (International Federation for Information Processing,简称 IFIP)、英国计算机协会(British Computer Society,简称 BCS)等更多的组织开发了 Computing Curricula2004(简称 CC2004), 使之成为开放的、可扩充的、适合多专业的、整合了计算机教学相关原则体系观点的课程体 系指南。其结构参见下图
Report and Guide to cc2001 S2002 SE2004 cE2005 T2005 cs2001) Curriculum Information Software Information cience Systems Engineering Technology needed for Curriculum Curriculum Curriculum emerging Report Report Report disciplines 为了进一步反映当代计算机科学技术的发展水平,与国际主流计算机教育思想接轨。通 过多年来对IEE-CS和ACM的 Computing Curricula课程体系的跟踪研究,我们在本教材的 编写中,借鉴了CC2004课程体系的最新研究成果,同时吸取了国外同类教材的优秀经验 其目的是进一步推动教材和课程改革,培养有竞争力人才。 致谢 本书是在作者多年科研和教学基础上编写的,主要参考了作者已发表的文章和著作以及 教学中积累的资料。书中还用到了其他中外文教材、资料,由于无法在此一一列举,现谨对 这些教材和资料的作者表示衷心的感谢。 参与本教材编写工作的人员还有昆明理工大学的刘迎春,海军工程大学的王永斌、周安 栋、段立、罗兵、李启元、杜军、吴苗、曹旭峰,南京航空航天大学无人机研究所的吴英 太原师范学院计算机中心的刘星,以及杨德刚、刘藩、吴永逸、洪蕾等。 本书的出版离不开许多人的支持,尤其是这本书。为此感谢我们的家人和朋友。我们 在忍受写作之苦的同时,牺牲了与他们共享天伦之乐的宝贵时光。 由于作者水平有限,本书中难免有疏漏和不妥之处,恳请各位专家、同仁和读者不吝赐 教,并在此表示特别感谢 http://www.liu-yi.net 2005年11月24日南京
为了进一步反映当代计算机科学技术的发展水平,与国际主流计算机教育思想接轨。通 过多年来对 IEEE-CS 和 ACM 的 Computing Curricula 课程体系的跟踪研究,我们在本教材的 编写中,借鉴了 CC2004 课程体系的最新研究成果,同时吸取了国外同类教材的优秀经验, 其目的是进一步推动教材和课程改革,培养有竞争力人才。 致谢 本书是在作者多年科研和教学基础上编写的,主要参考了作者已发表的文章和著作以及 教学中积累的资料。书中还用到了其他中外文教材、资料,由于无法在此一一列举,现谨对 这些教材和资料的作者表示衷心的感谢。 参与本教材编写工作的人员还有昆明理工大学的刘迎春,海军工程大学的王永斌、周安 栋、段立、罗兵、李启元、杜军、吴苗、曹旭峰,南京航空航天大学无人机研究所的吴英, 太原师范学院计算机中心的刘星,以及杨德刚、刘藩、吴永逸、洪蕾等。 一本书的出版离不开许多人的支持,尤其是这本书。为此感谢我们的家人和朋友。我们 在忍受写作之苦的同时,牺牲了与他们共享天伦之乐的宝贵时光。 由于作者水平有限,本书中难免有疏漏和不妥之处,恳请各位专家、同仁和读者不吝赐 教,并在此表示特别感谢! http://www.liu-yi.net 2005 年 11 月 24 日南京
Java程序设计大学教程 目录 第1章绪论 1.1什么是程序设计 1.1.1程序与计算机 1.1.2算法与数据结构 1.1.3程序设计过程 1.2程序设计语言 121发展历史 122语言的类型 123高级语言的分类 10 1.3Jna语言介绍 13.1Java发展的历史 13.2Java是什么,Java不是什么 133下载JDK搭建Java平台 14 1.4Jana程序的编写、编译和运行 141使用命令行工具 142使用Java编辑器 TextPad 7790 143使用集成开发环境 NetBeans ide 144优秀Java开发工具介绍 1.5本章习题 第2章程序设计基础 2.l程序 21.1初识Java程序 21.2标识符和关键字 21.3撰写规范的程序代码 2.2数据和数据类型 03336704 22.1数据… 222常量和变量 22.3数据类型 2,.3表达式与运算符 2.3.1表达式 23.2运算符 233运算符的优先级 2.4流程控制 241顺序结构 242选择结构 889 243循环结构 2.5本章习题 第3章面向对象与对象模型 3.面向对象的概念 3.1.1面向对象基本原理 3.1.2建立面向对象的思维 88&8 3.1.3UML和对象建模
Java 程序设计大学教程 目 录 第 1 章 绪论.....................................................................................................................................1 1.1 什么是程序设计 .................................................................................................................1 1.1.1 程序与计算机................................................................................................................................ 1 1.1.2 算法与数据结构............................................................................................................................ 4 1.1.3 程序设计过程................................................................................................................................ 7 1.2 程序设计语言 .....................................................................................................................8 1.2.1 发展历史........................................................................................................................................ 9 1.2.2 语言的类型.................................................................................................................................... 9 1.2.3 高级语言的分类.......................................................................................................................... 10 1.3 Java 语言介绍................................................................................................................... 11 1.3.1 Java 发展的历史.......................................................................................................................... 11 1.3.2 Java 是什么,Java 不是什么...................................................................................................... 12 1.3.3 下载 JDK 搭建 Java 平台............................................................................................................ 14 1.4 Java 程序的编写、编译和运行.......................................................................................17 1.4.1 使用命令行工具.......................................................................................................................... 17 1.4.2 使用 Java 编辑器 TextPad........................................................................................................... 19 1.4.3 使用集成开发环境 NetBeans IDE.............................................................................................. 20 1.4.4 优秀 Java 开发工具介绍............................................................................................................. 28 1.5 本章习题...........................................................................................................................30 第 2 章 程序设计基础 ...................................................................................................................33 2.1 程序...................................................................................................................................33 2.1.1 初识 Java 程序............................................................................................................................. 33 2.1.2 标识符和关键字.......................................................................................................................... 36 2.1.3 撰写规范的程序代码.................................................................................................................. 37 2.2 数据和数据类型 ...............................................................................................................40 2.2.1 数据.............................................................................................................................................. 41 2.2.2 常量和变量.................................................................................................................................. 43 2.2.3 数据类型...................................................................................................................................... 44 2.3 表达式与运算符 ...............................................................................................................53 2.3.1 表达式.......................................................................................................................................... 53 2.3.2 运算符.......................................................................................................................................... 53 2.3.3 运算符的优先级.......................................................................................................................... 57 2.4 流程控制...........................................................................................................................58 2.4.1 顺序结构...................................................................................................................................... 58 2.4.2 选择结构...................................................................................................................................... 59 2.4.3 循环结构...................................................................................................................................... 64 2.5 本章习题...........................................................................................................................71 第 3 章 面向对象与对象模型 .......................................................................................................80 3.1 面向对象的概念 ...............................................................................................................80 3.1.1 面向对象基本原理...................................................................................................................... 80 3.1.2 建立面向对象的思维.................................................................................................................. 82 3.1.3 UML 和对象建模........................................................................................................................ 83
Java程序设计大学教程 3.2类 32.1什么是Java类 322类成员… 3.23类成员的可访问性 3.3方法 33.1什么是方法 3.32方法参数 333静态字段和静态方法 3.4府象 34.1理解对象 342使用对象 343对象之间的关系 3.5本章习题 第4章面向对象程序设计 4.1原则和方法 4.2继质 116 42.1使用继承 42.2继承与合成 4.3多态 43.1多态与动态绑定 30 4.3.2方法的绑定 44.1接口的概念 136 44.2Java接口 443接口应用实例 4.5本章习题 第5章算法与数据结构 5.1算法 5.1.1算法的描述… 5.1.2常用算法 5.2数组 521数组的创建和使用 522多维数组和不规则数组 .3排序 24查找 5.3对象容器 5.3.1Java容器框架. 532 Collection与 Iterat 7m2247 5.3.3 List listiterator 5.4抽象数据类型 54.l链表 542栈 543队列 5.5本章习题
Java 程序设计大学教程 3.2 类.......................................................................................................................................87 3.2.1 什么是 Java 类............................................................................................................................. 87 3.2.2 类成员.......................................................................................................................................... 88 3.2.3 类成员的可访问性...................................................................................................................... 90 3.3 方法...................................................................................................................................90 3.3.1 什么是方法.................................................................................................................................. 90 3.3.2 方法参数...................................................................................................................................... 93 3.3.3 静态字段和静态方法.................................................................................................................. 94 3.4 对象...................................................................................................................................97 3.4.1 理解对象...................................................................................................................................... 97 3.4.2 使用对象...................................................................................................................................... 98 3.4.3 对象之间的关系........................................................................................................................ 107 3.5 本章习题.........................................................................................................................109 第 4 章 面向对象程序设计 ......................................................................................................... 114 4.1 原则和方法..................................................................................................................... 114 4.2 继承................................................................................................................................. 116 4.2.1 使用继承.................................................................................................................................... 116 4.2.2 继承与合成................................................................................................................................ 128 4.3 多态.................................................................................................................................130 4.3.1 多态与动态绑定........................................................................................................................ 130 4.3.2 方法的绑定................................................................................................................................ 133 4.4 接口.................................................................................................................................136 4.4.1 接口的概念................................................................................................................................ 136 4.4.2 Java 接口.................................................................................................................................... 137 4.4.3 接口应用实例............................................................................................................................ 141 4.5 本章习题.........................................................................................................................147 第 5 章 算法与数据结构 .............................................................................................................152 5.1 算法.................................................................................................................................152 5.1.1 算法的描述................................................................................................................................ 153 5.1.2 常用算法.................................................................................................................................... 155 5.2 数组.................................................................................................................................161 5.2.1 数组的创建和使用.................................................................................................................... 161 5.2.2 多维数组和不规则数组............................................................................................................ 164 5.2.3 排序............................................................................................................................................ 167 5.2.4 查找............................................................................................................................................ 170 5.3 对象容器.........................................................................................................................172 5.3.1 Java 容器框架............................................................................................................................ 172 5.3.2 Collection 与 Iterator ................................................................................................................. 174 5.3.3 List 及 ListIterator...................................................................................................................... 177 5.4 抽象数据类型 .................................................................................................................181 5.4.1 链表............................................................................................................................................ 182 5.4.2 栈................................................................................................................................................ 183 5.4.3 队列............................................................................................................................................ 186 5.5 本章习题.........................................................................................................................187