第一章 绪论
1. 简述 Java 技术体系的组成。
Java 技术体系主要由三部分组成: Java 平台标准版 Java SE,Java 平台企业版 Java EE,
以及 Java 平台微缩版 Java ME。
Java SE为Java桌面和工作组级应用的开发与运行提供了环境。 它的实现主要包括 Java
SE Developme nt Kit ( JDK 和 Java SE Run time Environment ( JRE)。Java SE 提供了编写
与运行 Java Applet 与 Application 的编译器、开发工具、运行环境与 Java API 。 Java EE 定
Internet 应用
开发。它基于 Java SE ,包括 Enterprise JavaBeans(EJB) ,Java Servlets API 以及 Java Server Pages(JSP) 等技术,并为企业级应用的开发提供了各种服务和工具。 Java ME 是针
义了基于组件的多层企业级应用的开发标准,面向企业级和高端服务器的
对消费类电子设备如移动、电视置顶盒、汽车导航系统等的嵌入式计算的一组技术和规。
2. Java 的特征有哪些?简述这些特征的含义。
Java 语言的特征包括:简单( Simple )、面向对象( Object oriented )、分布式
( Distributed )、解释型( Interpreted )、健壮( Robust )、安全( Secure )、体系结构中立 ( Architecture neutral )、可移植( Portable )、高性能( High performance )、多线程 ( Multithreaded )和动态( Dynamic)
简单性:Java语言语法和语义都比较单纯, 容易学习和使用。另外,去掉C++中的指针, 取消多重继承和运算符重载,存管理由程序员移向 Java 嵌的自动存回收机制等
面向对象:作为一种面向对象的编程语言, Java 不仅最为“纯洁” ,也对面向对象方法 学的支持也最为全面。 Java 的对象有模块化性质和信息隐藏能力,满足面向对象的封 装要求,同时支持继承和多态。
分布式: Java 支持的分布式计算包括两种层次:一是数据分布,即应用系统所操作的 数据可以分散存储在不同的网络节点上, 成。
半编译,半解释:采用编译器对程序进行编译,但编译得到的是一种中性的字节码,并 不是本机代码, 而字节码的执行采取解释执行方式。 该特征, 提高了 Java 的可移植性, 并使得 Java 语言兼具编译执行的效率优势和解释执行的灵活性。
健壮性: Java 提供自动垃圾收集来进行存管理,防止程序员在管理存时容易产生的错 误。通过集成的面向对象的例外处理机制, 帮助程序员正确地进行选择以防止系统的崩 溃。另外, Java 是一种强类型语言,程序编译时要经过严格的类型检查,防止程序运 行时出现类型不匹配等问题。
安全性: Java 在语言和运行环境中引入了多级安全措施,其采用的主要安全机制有: 存分配及布局由 Java 运行系统规定。运行系统执行基于数字签名技术的代码认证、字 节码验证与代码访问权限控制的安全控制模型。
体系结构中立: Java 为了做到结构中立,除了上面提到的编译生成机器无关的字节码 外,还制定了完整统一的语言文本。为了使 Java 的应用程序能不依赖于底层具体的系
可以通过Java的URL类访问。二是操作分布,
即应用系统的计算可通过嵌在 WW页面中的Applet (小应用程序),分布到不同的网络 节点完
统, Java 语言环境还提供了一个用于访问底层操作系统功能的可扩展类库,当程序使 用这些库时,可以确保它能运行在支持 Java 的各种平台上。
可移植性: Java 的最大特点是“一次编程,处处运行” 。任何机器只要配备了 Java 解 释器, 便可运行 Java 程序。这种可移植性源于两方面:一是 Java 的半编译、 半解释特 征;另一方面是 Java 体系结构中立,采用标准的独立于硬件平台的数据类型。
高性能: Java 语言的字节码与机器码十分接近,使得字节码到机器码的转换十分快捷。 另外,
Java 还提供了即时编译技术,提高了 Java 应用的运行速度。
多线程: Java 的特点是在语言级嵌入了多线程机制,支持程序的并发处理功能。从程 序的角度看,一个线程就是应用程序中的一个执行流。 Java 将临界区保护规则等集成 到语言中实现线程同步,使这些规则的使用更加方便有效。
动态特性: Java 程序的基本组成单元是类,而 Java 的类又是运行时动态装载的,这使 将
Java 可以动态地维护应用程序及其支持类之间的一致性。
3. Java语言的语法机制与 C/C++有何异同?
Java 的基本语法机制,例如:数据类型、表达式、程序流控制、结构化异常处理等,
都与C++相同。明显区别于 C++的语法机制,包括类(class )、接口( In terface )、程序包 ( package )、多线程以及取消指针。
4. Java 运行系统由哪些部分组成? Java 程序的运行过程是怎样的?
Java 运行系统一般包括以下几部分:类装配器、字节码验证器、解释器、代码生成器 和运行支
持库。
Java 运行系统运行的是字节码即 .class 文件。执行字节码的过程可分为三步: (1) 代码的装入
由类装配器装入程序运行时需要的所有代码, 其中包括程序代码中调用到的所有类。 当装入了运行程序需要的所有类后,运行系统便可以确定整个可执行程序的存布局。
(2) 代码的验证
由字节码检验器进行安全检查, 以确保代码不违反 Java 的安全性规则, 同时字节码 验证器还可发现操作数栈溢出、非法数据类型转化等多种错误。
(3) 代码的执行
Java 字节码的运行可以有两种方式:即时编译( Just-In-Time )方式和解释执行方式。
5. 什么是 JVM?
Java虚拟机是一个想象中的,能运行
Java字节码的操作平台。而
JVM规提供了这个平
台的严格的规说明,包括指令系统,字节码格式等。 运行系统的核心,Java运行系统是各供应商对
JVM进一步可用软件在不同的计算机系
存垃圾回收等,是上述Java
统上实现或用硬件实现。 JVM的实现包括字节码验证、解释器、
JVM的具体实现。
7. 编写一个 Java 程序,在屏幕上输出“欢迎学习 Java 语言!”的字符串。 public class Welcome{
public static void main (String args[]){
System.out.println(\欢迎学习 Java 语言 !\
第二章 面向对象程序设计基本概念
1. 什么是对象?什么是类?什么是实体?它们之间的相互关系是怎样的?试举例说明。
在面向对象方法中, 对象是现实世界实体或概念在计算机世界中的抽象表示, 是具有唯 一对象名、固定对外接口的一组变量 / 属性和方法的集合,是用来模拟组成或影响现实世界 问题的一个或一组因素。
类定义了对象类型, 包含同一类型的对象具有共同的特征与行为。 使用 class 定义的类 在程序中称为一种抽象数据类型, 它是面向对象程序设计语言的基本概念。 一个类在定义后, 我们就可以象使用其它数据类型一样, 声明该类的变量并创建该变量所指向的对象, 然后通 过该变量调用对象的方法实现对对象的操作。 实体表示现实世界中, 客观存在并可区分的事 物或概念。
在面向对象的问题求解方法中, 首先对现实世界的问题域进行语义抽象, 从各类对象中 抽象出对象类型,并得到对象类型之间的关联,形成问题的概念模型。 接下来,进行概念模 型到机器 (程序) 模型的转换得到机器世界的模型。 机器模型是由计算机能够理解和处理的 类构成的。 将类实例化就得到了现实世界实体的面向对象的映射——对象, 在程序中对对象 进行操作, 就可以模拟现实世界中的实体及实体之间相互作用, 解决由这些实体构成的现实 世界中的问题。
举例来说, 我们很多人都有自行车, 你的自行车就是“自行车”这类交通工具中的一个 实例,即现实世界的一个实体。 在机器世界中即程序中的自行车类包含了自行车都有相同的 状态,例如两个轮子、脚踏板速度等,以及共同的行为,如刹车等,将自行车类实例化就得 到了现实世界的自行车实体的映射——自行车对象, 在程序中对这个对象进行操作, 就可以 模拟现实世界中的自行车与其他实体之间相互作用。
2. 什么是对象的状态与行为?设有对象“学生” ,试给出这个对象的状态和行为。 现实世界的对
象具有两个特征: 状态与行为。 面向对象程序设计语言中的对象是以现实 世界的对象为模型构造的, 也具有状态与行为, 其中状态保存在一组变量中, 而对象的行为 通过方法实现。
“学生”的状态包括:学号、 、年龄、所属院系、专业方向等; “学生”的行为包括:注 册、选课、基本信息维护等。
3. 什么是封装与数据隐藏?
使用对象的对外接口 (方法) 将对象的变量与方法实现保护起来, 外界只能通过对象的 接口访问对象的服务,而对对象其它成员都无法访问,就称为封装。因此,对象中的数据封 装同时也实现了对象的数据隐藏。数据隐藏是通过对象成员的访问控制实现的。在 Java 语 言中提供了四种不同层次的访问控制,即 public , protected ,default 和 private ,从而 实现了对象四种不同程度的数据隐藏。
4. 什么是上溯造型?什么是晚联编?多态的含义是什么?
上溯造型的含义是子类沿着类继承体系向上, 将其类型塑造为父类类型, 使得子类对象 能够当作父类对象处理。
程序中调用对象的方法时,所调用的代码直到运行时刻才确定。因此,在程序编译时, 编译器可以保证该方法存在并且执行参数与返回结果的类型检查, 但却不知道要执行的准确 代码。在运行时刻, Java 运行系统根据对象变量当时所指向对象的实际类型,调用该对象 的相应方法。这种技术称
Java语言程序的设计第三版_习题答案



