1、Java 程序设计实用教程(第 4 版)习题解答与实验指导叶核亚 编著2013 年 11 月目录“Java 程序设计” 课程教学要求 1第 1 章 Java 概述 3第 2 章 Java 语言基础 5第 3 章 类的封装、继承和多态 22第 4 章 接口、内部类和 Java API 基础 38第 5 章 异常处理 43第 6 章 图形用户界面 45第 7 章 多线程 50第 8 章 输入/输出流和文件操作 52- 1 -“Java 程序设计”课程教学要求1. 课程性质、目的和任务程序设计是高等学校计算机学科及电子信息学科各专业本科的核心专业基础课程,是培养学生软件设计能力的重要课程。在计算机学
2、科的本科教学中,起着非常重要的作用。“Java 程序设计”是计算机科学与技术专业本科的专业基础限选课,开设本课程的目的是:进行程序设计和面向对象方法的基础训练;使用 Java 编程技术,设计解决操作系统、网络通信、数据库等多种实际问题的应用程序。本课程通过全面、系统地介绍 Java 语言的基础知识、运行机制、多种编程方法和技术,使学生理解和掌握面向对象的程序设计方法,理解和掌握网络程序的特点和设计方法,建立起牢固扎实的理论基础,培养综合应用程序的设计能力。本课程的先修课程包括:C/C+程序设计 I、C/C+程序设计 II、数据结构、操作系统、计算机网络、数据库原理等。2. 教学基本要求本课程的
3、基本要求如下。 了解 Java 语言特点,理解 Java Application 应用程序的运行原理和方法。掌握在JDK 环境中编译和运行程序的操作,熟悉在 MyEclipse 集成开发环境中,编辑、编译、运行和调试程序的操作。 掌握 Java 语言中语句、数组、引用类型等基本语法成分的使用方法,通过类、接口、内嵌类型、包、异常处理等机制表达和实现面向对象程序设计思想。 掌握 Java 的多种实用技术,包括图形用户界面、多线程、文件操作和流、使用URL 和 Socket 进行网络通信等。 熟悉 Java JDBC 数据库应用的设计方法。 熟悉基于 JSP 的 Web 应用设计方法。重点:面向对
4、象概念,图形用户界面,线程,流与文件操作,Socket 通信。难点:继承和多态,线程同步,流与文件操作,Socket 通信,JDBC,JSP。3. 学时分配本课程学时为 64 学时,其中讲课 48 学时,实验 16 学时。学时分配见下表。章节(或内容) 讲课 实验 合计Java 概述 2 2Java 语言基础 4 4类的封装、继承和多态 6 2 8接口、内部类和 Java API 基础 4 2 6- 2 -异常处理 2 2图形用户界面 6 2 8多线程 4 2 6输入/输出流和文件操作 6 2 8网络通信 6 2 8数据库应用 2 2 4Web 应用 4 2 6综合应用设计 2 2合 计 48
5、 16 644. 实验教学目标与基本要求“Java 程序设计”是理论与实践相结合的课程,不仅要求学生掌握基础知识,理解基本原理,更要在实践环节中培养软件设计的基本技能。实践性环节是巩固所学理论知识、积累程序设计经验的必不可少的重要环节,是提高程序设计能力和计算机操作技能的有力保障。实验和课程设计等都是加强程序设计训练所必需的实践环节。课程实验要求是,熟练使用一种 Java 开发环境(如 MyEclipse) ,掌握编译、运行和调试 Java 程序的操作,针对不同情况进行软件测试,完善程序并提高程序性能。实验类型有验证和设计两种。验证型实验的要求是,仿制已有例题,验证面向对象程序设计的理论和方法
6、,理解基本原理;设计型实验的要求是,应用图形用户界面、线程、Applet、文件操作和流、网络通信、数据库应用等章的知识点,掌握解决这些实际应用问题的软件设计方法,设计具有一定规模、较复杂、较综合并解决实际问题的应用程序,具备独立分析问题、解决问题的能力和综合应用程序的设计能力。本课程安排的上机实验学时为 16 时,课内开设的 8 个实验说明如下。项 目 内 容 实验时数实验 1 Java 语言基础和面向对象概念训练 2实验 2 接口和实现接口的类,异常处理 2实验 3 图形用户界面 2实验 4 线程设计,线程互斥与同步 2实验 5 输入/输出流,文件操作 2实验 6 URL、TCP Socke
7、t、UDP Socket 等网络通信 2实验 7 JDBC 数据库应用设计 2实验 8 基于 JSP 的 Web 应用设计 2实验题有详细的实验训练目标、设计内容和设计要求。每次实验要求学生独立完成至少一个程序的编写和运行,写出实验报告。实验报告内容包括:题目、题意解释、题意分析、设计方案、流程描述、源程序清单、程序运行结果、程序存在问题和改进意见等。- 3 -第 1 章 Java 概述本章教学内容及要求如下: 了解 Java 语言特点,理解 Java Application 应用程序的运行原理和方法,理解由Java 虚拟机支持的程序运行机制。 掌握在 JDK 环境中编译和运行程序的操作,熟悉
8、在 MyEclipse 集成开发环境中编辑、编译、运行和调试程序的操作。重点:掌握在 JDK 和 MyEclipse 环境中编译和运行 Java Application 应用程序的操作。1.1 了解 Java1-1 Java 具有哪些适合在 Internet 环境中运行的特点?【答】跨平台特性、完全面向对象和简单性、可靠性、安全性、多线程、支持分布式网络应用等。1-2 什么是跨平台特性?Java 怎样实现跨平台特性?【答】跨平台特性是指一个应用程序能够运行于不同的操作系统平台。Java 采用虚拟机技术支持跨平台特性,不同的操作系统上运行不同版本的 Java 虚拟机。1-3 Java 源程序文件
9、编译后生成什么文件?程序的运行机制是怎样的? 【答】Java 将源程序文件(*.java)中的每个类编译生成 一个字节码文件(.class) ,由Java 虚拟机解释执行字节码文件。1-4 Java 应用程序有哪两种形式?它们的运行方式有什么不同?【答】Java 应用程序有两种:Application 和 Applet。Application 是能够独立运行的应用程序,有控制台和图形用户界面两种运行方式。Applet 是可以嵌入 Web 页面的最小应用,它不能独立运行,必须嵌入超文本(*.html )中,由浏览器中的 Java 解释器解释执行。1.2 JDK1-5 环境变量 path 和 cl
10、asspath 的作用分别是什么?【答】path 提供可执行文件(.exe)的路径;classpath 提供类文件(.class)的路径。1-6 什么是包?为什么需要包机制?【答】包(package)是类的集合。包是 Java 区别类名字空间的机制。一个包中的多个类之间不能重名,不同包中的类名则可以相同。- 4 -【习1.3】 为例1.2的Line类增加以下方法:public double length() /返回直线长度int a=start.x-end.x, b=start.y-end.y;return Math.sqrt(a*a+b*b); /Math.sqrt(x)返回 x 的平方根1
11、-7 Java 对源程序文件中的声明语句及文件其命名规则有什么要求?【答】在一个 Java 源程序文件(*.java)中,可以使用 package 语句声明包,使用import 语句导入包,之后使用 class 或 interface 声明多个类或接口。其中,声明为 public 权限的类或接口只能有一个,且文件名必须与该类名相同。1-8 程序中的错误有哪几种?分别在什么时刻被发现?【答】语法错、语义错、逻辑错。编译时能够发现语法错,运行时能够发现语义错,运行时不能发现逻辑错。- 5 -第 2 章 Java 语言基础本章教学内容及要求如下: 掌握 Java 语言的基本语法成分,包括标识符与关键
12、字、数据类型、运算符、表达式、变量声明等语言成分,掌握分支、循环等流程控制语句的语法和使用。特别注意与 C/C+的不同之处。 掌握数组类型的声明和动态内存申请,掌握以基本数据类型和类的两种方式声明和使用字符串。 掌握 Java 语言的方法声明和调用规则,掌握基本类型和引用类型作为方法参数和返回值的传递规则。 掌握 MyEclipse 程序调试技术。重点:数组的引用模型;使用静态方法,引用类型作为方法的参数和返回值。难点:位运算,二进制;递归算法。MyEclipse 程序调试技术。2.1 语言成分1. 数据类型、变量及运算2-1 Java 语言的基本数据类型有哪些?引用数据类型有哪些?【答】基本
13、数据类型有:整数类型 byte、short、int、long,浮点数类型 float、double,字符类型 char,布尔类型 boolean;引用数据类型包括数组(array) 、类(class)和接口(interface) 。2-2 与 C+语言相比, Java 语言的变量和常量声明有什么差别?【答】Java 语言没有全局变量, (成员)局部变量含义及变量声明格式与 C+相同。Java 语言没有宏替换,使用最终变量概念代替 C+中的常量和宏替换。使用 final 关键字声明最终变量,只能赋值一次,这样既增加了常量功能,又避免全局变量和宏替换的副作用。2-3 Java 语言的运算分哪些类型
14、?与 C+语言相比,运算符及运算含义有哪些变化?【答】Java 语言有算术运算、关系运算、位运算、逻辑运算、赋值运算、强制类型转换、条件运算、括号运算、点运算、new、+字符串连接运算和 instanceof 运算等,其中+字符串连接和 instanceof 运算符是 Java 新增的,此外,放弃了 C+的 sizeof 运算符。与 C+语言相比,Java 语言的语法更为严谨,将 C+中某些容易引起混淆的语法做了修订,编译时也将严格进行检查。在 Java 语言中,运算符及运算含义有变化的说明如下。 没有赋值功能的表达式不能作为语句。例如:int i=0;- 6 -i+1; /编译错“无效的赋值
15、运算” 逗号是分隔符,仅用于分隔表达式,不是运算符,不能出现在表达式中。例如:for (int i=0, j=0; i ? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z | 修改上述程序段的 for 语句表达式如下,输出 Unicode 汉字字符表。for (char ch=u4e00; ch=u9fa5; ch+) /Unicode 汉字字符表一 龥 Unicode 字符的取值范围是 065535(u0000 uffff) ,反之,并不是 065535 之中每个值都对应一个字符,标准输出语句输出没有对应字符的编码时,输出结果是问号“?” 。例如,128 没有对应字符,以下欲输出编码为 128 的字符,输出结果是问号。