编辑推荐
本书是Java语言的入门级教材,是作者针对Java语言的教学目的,结合国内教学的特点,根据多年的教学实践与科技开发的经验编写的。结合作者编写的《Java程序设计题解与上机指导》,能帮助读者尽快掌握Java程序设计的方法。
内容简介
本书从Java语言的基本特点入手,全面介绍了Java语言的基本概念和编程方法,并深入介绍了Java语言的高级特性。内容涉及Java语言的基本语法、数据类型、类、异常、界面设计、小应用程序、I/O数据流、线程及网络功能等,基本覆盖了Java语言的大部分技术,是进一步使用Java语言进行技术开发的基础。
本书内容详尽,实例丰富,在每章最后均列出了若干习题,以方便教学。
与本书配套的《Java程序设计题解与上机指导》(第四版)中提供了本书的习题解答及有关上机 实验。
本书适合作为高等学校教材,也可作为专业人员的参考书。
作者简介
辛运帏,女,博士,教授。现为南开大学计算机与控制工程学院计算机与信息安全系教授。多年来一直从事程序语言设计、数据结构与算法等方向的教学和科研工作,主讲数据结构与算法、形式语言与自动机、计算方法等课程。主要研究领域为人工智能、电子商务、加密技术、智能信息系统等,已出版《Java语言程序设计》、《数据结构》、《离散数学》等相关教材。
目录
概述
1.1 什么是Java语言 1
1.1.1 Java语言的特点 1
1.1.2 Java的三层架构 3
1.1.3 Java语言的目标 4
1.1.4 Java虚拟机 4
1.1.5 垃圾收集 5
1.1.6 代码安全 5
1.2 一个基本的Java应用程序 8
1.2.1 开发环境的安装 8
1.2.2 Java应用程序 11
1.3 程序的编译和运行 13
1.3.1 编译 13
1.3.2 运行 13
1.4 常见错误 14
1.4.1 编译时错误 14
1.4.2 运行时错误 15
1.5 使用Java核心API文档 16
习题 19
标识符和数据类型
2.1 Java的基本语法单位 20
2.1.1 空白、注释及语句 20
2.1.2 关键字 22
2.1.3 标识符 23
2.2 Java编码体例 23
2.3 Java的基本数据类型 24
2.3.1 基本数据类型 24
2.3.2 类型转换 27
2.3.3 变量、说明和赋值 27
2.4 复合数据类型 29
2.4.1 概述 29
2.4.2 复合数据类型 30
2.5 类和对象的初步介绍 30
2.5.1 Java中的面向对象技术 30
2.5.2 Java中的类定义 32
2.5.3 Java中与OOP有关的关键字 33
2.5.4 类定义示例 36
2.5.5 创建一个对象 38
2.5.6 引用变量的赋值 41
2.5.7 默认初始化和null引用值 41
2.5.8 术语概述 42
习题 43
表达式和流程控制语句
3.1 表达式 45
3.1.1 操作数 45
3.1.2 运算符 49
3.1.3 表达式的提升和转换 53
3.1.4 数学函数 53
3.2 流控制 54
3.2.1 表达式语句 54
3.2.2 块 55
3.2.3 分支语句 55
3.2.4 循环语句 61
3.2.5 break与continue语句 63
3.2.6 注释语句 65
3.3 简单的输入输出 66
习题 69
数组、向量和字符串
4.1 数组 72
4.1.1 数组说明 72
4.1.2 创建数组 73
4.1.3 数组边界 76
4.1.4 数组元素的引用 76
4.1.5 多维数组 78
4.1.6 数组复制 83
4.2 Vector类 83
4.2.1 概述 84
4.2.2 Vector类的构造方法 84
4.2.3 Vector类对象的操作 85
4.2.4 Vector类中的其他方法 87
4.2.5 Vector类的使用举例 87
4.3 字符串类型 89
4.3.1 字符串简述 89
4.3.2 字符串说明及初始化 89
4.3.3 字符串处理 90
4.3.4 几个特殊处理 91
习题 93
进一步讨论对象和类
5.1 抽象数据类型 96
5.1.1 概述 96
5.1.2 定义方法 97
5.1.3 按值传送 100
5.1.4 重载方法名 102
5.2 对象的构造和初始化 103
5.2.1 显式成员初始化 103
5.2.2 构造方法 103
5.2.3 默认的构造方法 105
5.2.4 构造方法重载 106
5.2.5 finalize()方法 106
5.2.6 this引用 107
5.3 子类 107
5.3.1 is-a关系 108
5.3.2 extends关键字 109
5.3.3 单重继承 110
5.3.4 转换对象 112
5.3.5 方法自变量和异类集合 114
5.4 方法重写 115
5.4.1 方法重写示例 115
5.4.2 应用重写的规则 119
5.4.3 父类构造方法调用 120
5.5 多态 121
5.6 Java包 122
5.6.1 Java包的概念 123
5.6.2 import语句 123
5.6.3 目录层次关系及CLASSPATH环境变量 125
5.6.4 访问权限与数据隐藏 126
5.6.5 封装 128
5.7 类成员 128
5.7.1 类变量 128
5.7.2 类方法 131
5.8 关键字final 132
5.8.1 终极类 133
5.8.2 终极方法 133
5.8.3 终极变量 134
5.9 抽象类 135
5.10 接口 137
5.10.1 接口的定义 138
5.10.2 接口的实现 138
5.11 内部类 142
5.11.1 内部类的概念 142
5.11.2 匿名类 144
5.11.3 内部类的工作方式 145
5.12 包装类 145
习题 147
Java语言中的异常
6.1 异常 149
6.1.1 引出异常 149
6.1.2 异常的概念 151
6.1.3 异常分类 152
6.2 异常处理 154
6.2.1 try-catch块 154
6.2.2 再讨论前面的示例 157
6.2.3 公共异常 157
6.3 抛出异常 159
6.4 创建自己的异常 160
习题 162
Java语言的高级特性
7.1 泛型 163
7.1.1 泛型数据类型 163
7.1.2 接口中的泛型 163
7.1.3 泛型类 164
7.1.4 泛型方法 166
7.2 迭代器 167
7.2.1 迭代器的基本概念 167
7.2.2 接口Iterator 167
7.2.3 接口Iterable 169
7.2.4 使用迭代器示例 169
7.2.5 Iterable和for-each循环 173
7.3 克隆 173
习题 181
Java的图形用户界面设计
精彩书摘
第5章 进一步讨论对象和类
5.1 抽象数据类型
5.1.1 概述
绝大多数程序设计语言都预定义了一些基本数据类型,并相应定义了对那些类型的实例执行的操作。比如,对整型、实型等数值类型,有加、减、乘、除等操作;对逻辑类型,有逻辑与、逻辑或、逻辑非等操作。
对于用户自定义的复合数据类型,需要由程序员自己定义一些方法,对该类型的实例进行所需的操作。在早期许多程序设计语言中,复合数据类型及其相关操作的代码之间没有特殊的联系。比如,用户定义日期Date类型,并定义一个方法tomorrow(),它接收一个Date类型的参数,据此推断其后继日是哪一天。程序中定义变量的代码和tomorrow()方法的代码可以是分离的。
有些编程语言改进了这种处理方式,允许数据类型说明和欲对该类型变量进行操作的代码说明之间有较紧密的联系。通常数据类型加上其上的操作称为抽象数据类型。严格地说,抽象数据类型是指基于一个逻辑类型的数据类型以及这个类型上的一组操作。每一个操作由它的输入、输出定义。一个抽象数据类型的定义并不涉及它的实现细节,这些实现细节对于抽象数据类型的用户是隐藏的。
程序5-1给出了Date类型和tomorrow操作间建立的一种联系。
程序5-1
public class Date {
private int day, month, year;
Date ( int i, int j, int k) {
?day = i;
?month = j;
?year = k;
}
Date() { //这是个构造方法,显式初始化
?day = 1;
?month = 1;
?year = 1998;
}
Date ( Date d) { //这是带一个参数的构造方法
?day = d.day;
?month = d.month;
?year = d.year;
}
public Date tomorrow() {
?Date d = new Date(this); //说明一个对象
?d.day++;
?if (d.day > d.daysInMonth()){//daysInMonth()返回每个月中不同的天数
d.day = 1;
d.month ++;
if (d.month > 12) {
d.month = 1;
d.year ++;
}
}
return d;
}
}
名为tomorrow的代码段在Java中叫作方法,也可以称为成员函数。
在有些程序设计语言中,tomorrow()方法的定义或许会要求带一个参数,例如:
void tomorrow(Date d);
像Java这种支持抽象数据类型的语言在数据和操作间建立了较严格的联系,即把方法与数据封装在一个类中。在程序中不是把方法描述为对数据的操作,而是认为数据知道如何修改自己,然后要求数据对它自己执行操作。相应的语句如下:
Data d = new Date ( 20, 11, 1998); //已初始化的date对象
d.tomorrow();
这种写法表明,数据自己执行操作,tomorrow()方法作用于变量d。要访问Date类的域,可使用点操作符“.”:
d.day
它的意思是“d所指的Date对象中的day域”。类似地,d.tomorrow()是指“调用d所指的Date对象中的tomorrow()方法”,即对d对象进行tomorrow操作。
把方法看作是数据的特性,而不把数据与方法分开,这种思想是建立面向对象系统过程中的重要步骤。
5.1.2 定义方法
定义一个抽象数据类型后,还需要为这个类型的对象定义相应的操作,也就是方法。在Java中,方法的定义方式类似于其他语言,尤其与C和C++ 很类似。定义的一般格式如下:
<修饰符> <返回类型> <名字>(<参数列表>)<块>
其中:
* <名字>是方法名,它必须使用合法的标识符。
* <返回类型>说明方法返回值的类型。如果方法不返回任何值,它应该声明为void。Java对待返回值的要求很严格,方法返回值必须与所说明的类型相匹配。如果方法说明有返回值,比如说是int,那么方法从任何一个分支返回时都必须返回一个整数值。
* <修饰符>段可以含几个不同的修饰符,其中限定访问权限的修饰符包括public、protected和private。public访问修饰符表示该方法可以被任何其他代码调用,而private表示方法只能被类中的其他方法调用。关于其他修饰符的说明请参考 2.5.3节。
* <参数列表>是传送给方法的参数表。表中各元素间以逗号分隔,每个元素由一个类型和一个标识符组成。
* <块>表示方法体,是要实际执行的代码段。
在例5-1中,为程序2-4中的Customer类定义了方法setName()和setAddress()。
例5-1 方法定义示例。
void setName (String name) {
this.name = name;
}
String getAddress() {
return address;
}
下面在Date类中增加daysInMonth()和printDate()方法,以便完善Date类。
程序5-2
public class Date {
private int day, month, year;
Date ( int i, int j, int k) {
day = i;
month = j;
year = k;
}
Date() { //构造方法
day = 1;
month = 1;
year = 1998;
}
Date ( Date d) { //带一个参数的构造方法
day = d.day;
month = d.month;
year = d.year;
}
public void printDate() {
System.out.print(day + "/" + month + "/" + year);
}
public Date tomorrow() {
Date d = new Date(this);
d.day++;
if (d.day > d.daysInMonth()) {
d.day = 1;
d.month ++;
if (d.month > 12) {
d.month = 1;
d.year ++;
}
}
return d;
}
public int daysInMonth() {
switch (month) {
case 1: case 3: case 5: case 7:
case 8: case 10: case 12:
return 31;
case 4: case 6: case 9: case 11:
return 30;
default:
if ( year % 100 != 0 && year % 4 == 0 ) {
return 29;
}
else return 28;
……
前言/序言
现代科学技术的飞速发展,改变了世界,也改变了人类的生活。作为新世纪的大学生,应当站在时代发展的前列,掌握现代科学技术知识,调整自己的知识结构和能力结构,以适应社会发展的要求。新世纪需要具有丰富的现代科学知识,能够独立完成面临的任务,充满活力,有创新意识的新型人才。
掌握计算机知识和应用,无疑是培养新型人才的一个重要环节。现 在计算机技术已深入到人类生活的各个角落,与其他学科紧密结合,成为推动各学科飞速发展的有力的催化剂。无论学什么专业的学生,都必须 具备计算机的基础知识和应用能力。计算机既是现代科学技术的结晶, 又是大众化的工具。学习计算机知识,不仅能够掌握有关知识,而且能培养人们的信息素养。这是高等学校全面素质教育中极为重要的一部分。
高校计算机基础教育应当遵循的理念是:面向应用需要;采用多种模式;启发自主学习;重视实践训练;加强创新意识;树立团队精神,培养信息素养。
计算机应用人才队伍由两部分人组成:一部分是计算机专业出身的计算机专业人才,他们是计算机应用人才队伍中的骨干力量;另一部分是各行各业中应用计算机的人员。这后一部分人一般并非计算机专业毕业,他们人数众多,既熟悉自己所从事的专业,又掌握计算机的应用知识,善于用计算机作为工具解决本领域中的任务。他们是计算机应用人才队伍中的基本力量。事实上,大部分应用软件都是由非计算机专业出身的计算机应用人员研制的,他们具有的这个优势是其他人难以代替的。从这个事实可以看到在非计算机专业中深入进行计算机教育的必要性。
非计算机专业中的计算机教育,无论目的、内容、教学体系、教材、教学方法等各方面都与计算机专业有很大的不同,绝不能照搬计算机专业的模式和做法。全国高等院校计算机基础教育研究会自1984年成立以来,始终不渝地探索高校计算机基础教育的特点和规律。2004年,全国高等院校计算机基础教育研究会与清华大学出版社共同推出了《中国高等院校计算机基础教育课程体系2004》(简称CFC2004);2006年、2008年又共同推出了《中国高等院校计算机基础教育课程体系2006》(简称CFC2006)及《中国高等院校计算机基础教育课程体系2008》(简称CFC2008),由清华大学出版社正式出版发行。
??1988年起,我们根据教学实际的需要,组织编写了“计算机基础教育丛书”,邀请有丰富教学经验的专家、学者先后编写了多种教材,由清华大学出版社出版。丛书出版后,迅速受到广大高校师生的欢迎,对高等学
Java程序设计(第4版)/新世纪计算机基础教育丛书 下载 mobi epub pdf txt 电子书 格式