admin管理员组

文章数量:1530987

2024年7月31日发(作者:)

高等院校计算机基础教育规划教材《Java

程序设计》课后习题参考答案

――武汉大学出版社

习题1参考答案

1.Java语言的特点有哪些?

答:参考1.1.2

防止直接访问数据变量看起来有些奇怪,但它实际上却对使用类的程序质量有极大的好

处。既然数据的单个项是不可访问的,那么惟一的办法就是通过方法来读或写。因此,如果

要求类成员内部的一致性,就应该通过类本身的方法来处理。

这种数据隐藏技术就是面向对象的重要特性——封装。它将类的外部界面与类功能的实

现区分开来,隐藏实现细节,(通过公共方法)保留有限的对外接口,迫使用户使用外部界面,

通过访问接口实现对数据的操作。即使实现细节发生了改变,还可通过界面承担其功能而保

留原样,确保调用它的代码还继续工作,这使代码维护更简单。

2.简述封装的优点。

答:封装是一个简单而有效的思想,优点有:(1)模块化,对内成为一个结构完整、可

进行自我管理、自我平衡、高度集中的整体。(2)信息隐蔽,对外则是一个功能明确、接口

单一、可在各种适合的环境下都能独立工作的有机单元。

面向对象的程序设计实现了对象的封装,使得用户不必关心诸如对象的行为是如何实现

的这样一些细节。通过对对象的封装,实现了模块化和信息隐藏,有利于程序的可移植性和

安全性,同时也有利于对复杂对象的管理。类的封装性使得代码的可重用性大为提高,这样

的有机单元特别适合构建大型标准化的软件系统,具有很高的开发效率。

3.Java的基本工具有哪些?

(1) javac 编译器

(2) java 解释器

(3) jdb Java 语言调试器

(4) javadoc API文档管理器

(5) javah 头文件生成器

(6) appletviewer 小应用程序浏览器

(7) javap 类文件反汇编器

4.Java开发环境是如何配置的?

答:对于Windows 2000以上版本的操作系统,可以打开[控制面板]窗口,双击其中的[系

统]图标,在[系统特性]窗口中单击[高级]选项卡,进而单击[环境变量]按钮。在出现的[环境

变量]窗口中,在[系统变量]框中选择[Path]项,单击[编辑]按钮,在弹出的[编辑系统变量]

窗口的[变量值]框后加上上面两条语句。

1

习题2参考答案

1.Java语言包含哪些数据类型?

答:包含基本数据类型和复合数据类型。基本类型包括整数类型、浮点数类型、布尔类

型。复合类型包括类类型(Class Type)、接口类型(Interface Type)与数组类型(Array Type)。

2.Java有多少关键字?

答:abstract, continue, for, new, switch,boolean, default, goto*, null, synchronized,break, do,

if, package, this,byte, double, implements, private, threadsafe,byvalve*, else, import, protected,

throw,case, extends, instanceof, public, transient,catch, false, int, return, true,char, final,

interface, short, try,class, finally, long, static, void,const*, float, native, super, while

3.byte、short、int、long和char整数类型各占了多少字节?

答:byte占了1字节,short占了2字节,int占了4字节,long占了8字节,char占了

2字节。

4.Java的控制结构有哪几类?

答:流程控制语句可以分为选择、循环和跳转3大类。

习题3参考答案

1.声明类的格式是什么?

答:

[类修饰符]class类名称[extends父类名称][implements接口名称]

{

类主体

}

2.面向对象程序设计中,什么是构造函数?

答:类类型声明方法成员,如果方法名称与类名称一样,这种方法成员称为构造函数。

习题4参考答案

1.面向对象程序设计中,什么是封装?

答:OOP将处理过程与数据合并在一起处理。

2.面向对象程序设计中,什么是数据抽象化?

答:OOP程序设计的重心为对象,因些对象被视为拥有本身数据与处理过程的组件,

这些组件都有其独立性。所以对象内、外程序的处理就有某种程度的限制,换句话说,对象

外部并不明了对象内部数据如何传递、改变,如何处理过程。这种隐藏对象内部的数据及处

理过程的方式,使得对象抽象化,有人将这种处理方式称为数据抽象化。类库就是Java

API(Application ProgrammingInterface,应用程序接口),是系统提供的已实现的标准类的集

合。在程序设计中,合理和充分利用类库提供的类和接口,不仅可以完成字符串处理、绘图、

网络应用、数学计算等多方面的工作,而且可以大大提高编程效率,使程序简练、易懂。

2

习题5参考答案

1.简述数据类型类的常用方法。

答:对所有数据类型类的对象,形如“对象名.xxxxValue()”的成员方法,用来获得对

象中的基本类型数据。包括:

对象名.doubleValue();

对象名.intValue();

对象名.byteValue();

对象名.shortValue();

对象名.longValue();

对象名.charValue();

对象名.floatValue();

对象名.booleanValue();

2.何为命令行参数?

答:所谓命令行参数,是指执行某个Java应用程序时,从命令行中向程序直接传送的

参数。我们可以获得这些参数的值,并运用到程序的执行过程中。

3.如何定义和创建一个数组?

答:要创建一个数组,必须首先定义数组变量所需的类型。通用的一维数组的声明格式

是:type arrayName[];其中,type定义了数组的基本类型,arrayName是数组的名称。基

本类型决定了组成数组的每一个基本元素的数据类型。

4.如何声明一个二组数组?

答:二维数组的一般声明格式如下:

数组元素类型 数组名[][];

数组元素类型 [][]数组名;

5.列举一下数据类型类的常用方法。

答:对所有数据类型类的对象,形如“对象名、xxxxvalue()”的成员方法,用来获得

对象中的基本数据类型。包括:对象名、double Value();对象名、int Value();对象名、

byte Value();等。

习题6参考答案

1.解释下列方法的意义:

(1)toLowerCase() (2)toUpperCase() (3)charAt()

(4)equalsIgnoreCase() (5)capacity() (6)setLength()

(7)reverse() (8)replace(start,end,str)

答:

(1)将字符转换成小写字符

(2)将字符转换成大写字符

(3)从0算起第index字符

(4)忽略大小写,比较两字符串是否,相等,若是返回true,否则返回false

(5)计算字符串缓冲器的容量

(6)设定字符串的长度

(7)将字符串反转排列

3

(8)返回字符串缓冲器从stare开始到end结束字符被str字符串取代

2.capacity()与length()的用法有什么不同?

答: capacity()用来计算字符串缓冲器的容量,length()用于计算字符串长度。如:

String Buffer ko1=new String Buffer(20),则ko1 capacity()=20,但ko1,length()可能

是0或20,视ko1字符串长度而定。

习题7参考答案

1.什么叫流?流式输入输出有什么特点?

答:Java中的流是对数据传递机制的抽象。流分为两种:输入和输出。Java中所有输

入/输出操作都是使用基本字节类型完成的。字符是通过值为字节类型的特殊代码处理的。

Java程序的所有读写操作都是通过流实现的。流是一组字符序列。输入源可以是键盘、文件

或网络,输出自的地可以是屏幕、文件或网络。数据作为字节序列进行发送和接收。

类有哪些构造函数和常用方法?并举例说明。

答:使用下面的构造函数创建File对象:

File(String dirpath)

File(Stringdirpath,Stringnlename)

File(FnedirObj,Stringfilename)

这里,dirpath是文件的路径名,filename是文件名,dirObj是指定目录的Fie对象。

下面的例子创建了3个文件:f1、f2和f3。第一个File对象只有目录路径一个参数。

第二个有两个参数——目录和文件名。第三个包括赋给n的文件路径和文件名。f3和f2指

的是同一个文件。最后一个包括指定文件“autoexec.bat”所在的目录名称。

File f1=newFile("/");

File f2=newFile("/","autoexec.bat");

File f3=newFile(f1,"autoexec.bat");

File f3=newFile("user","autoexec.bat");

File类的方法

下面是File类中一些重要的方法:

getName()

该方法用来获取指定文件的名称。

getPath()/getAbsolutePath()

这两个方法分别得到指定文件的相对路径和绝对路径。

exists()

该方法用来判断命名的文件是否存在于目录当中。

isFile()/isDirectory()

这两个方法分别用来判断命名的文件是否是普通文件和目录。

canRead()/canWrite()

这两个方法分别用来判断指定文件是否可读写。

lastModified()

该方法返回文件最近一次被修改的时间。

length()

该方法返回文件的大小,以字节记。

delete()

该方法用来删除指定文件。

4

renameTo()

该方法用来对已知文件进行重命名。它将目的文件或者说重命名后的文件对象作为参

数。

isFile()

该方法通常返回true,但是一些特殊的文件如设备驱动和命名管道可能与普通文件不

同,所以该方法可以确定所访问实体是一个文件。

isAbsolute()

如果文件是绝对路径该方法返回true,相对路径则返回false。

3.简单介绍一下Random Access File类。

答:RandomAceessFile类封装了一个随机访问文件。它不是从输入输出流中获得。相反,

它实现了定义基础FO方法的Datalnput和DataOutput这两个接口。它也支持定位请求,例

如可以在文件中定位文件指针。它包含下面两个构造函数:

RandomAccessFile(File fObj,String acc)

RandomAccessFile(String fname,String acc)

在第一种形式下,fObj是指作为File对象打开的文件名称。在第二种形式下,以fname

作为参数传递文件名。在两种情况下,acc都决定了允许访问什么样的文件类型。如果是“r”,

那么可以对文件进行读访问,如果是“rw”,则可以进行读写访问。seek()方法用来设置文件

指针的当前位置。

void seek(long newPos)

这里,newpos是指以字节方式指定的新位置或者从文件头或文件尾开始的文件指针。

调用seek方法之后,将会在新的文件位置发生读或写的操作。

4.举例实现写文件FileOutputStream类。

写文件举例如下:

//

import .*;

public class FileOutputSample {

public static void main (String args[]) {

String name="";

FileOutputStream outputStre~m; //文件输出流对象

//缓冲数组,假设写入文件的长度不超过1024字节

byte[] buffer=new byte[1024];

try {

outputStream=new FileOutputStream (new File (name)) ;

try {

n ("\nInput file content (Tab+Enter to exit) : ");

//循环读入字符,Tab+Enter键结束

int b, i= 0;

while (i < 1024 && (char) (b= ()) != '\t') {

buffer[i++]=(byte) b;

}

(buffer) ;

() ;

}

catch (IOException e) {

5

n ("I/O Exception when writing or closing: "+

ng ()) ;

}

}

catch (Exception e) {

n (ng ()) ;

}

n ("The content has been saved to File" + name) ;

}

}

编译运行程序,程序会提示用户输入,用户输入“Tab+Enter”后将退出向文件中输入

内容,然后用户输入的内容将保存到文件中。

5.数据流分哪两种?

答:数据流分为数据输入流DataInputStream和数据输出流DataOutputStream。

(1)数据输入流DataInputSrtream

类DataInputStream 继承自FilterInputStream类,并实现了DataInput接口。其构造函数

如下:

public DatalnputStream(InputStream in);

其构造函数以一个字节输入流in对象位参数,在创建DatalnputStream对象时,in是

InputStream类的子类的一个对象。

DataInputStream类常用的构造方法包括:

public final iht read(int[]b);

public final int read(int[]b,int offset,int len);

public final int readInt();

前两个方法主要是将输入流对象中的数据读入到一个缓冲数组b中:而第三个方法是读

取一个整型数据,与该方法类似的还有readChar()、readBoolean()、readFloat()、readDouble()

等,这些方法都是读入一个简单类型的数据,可以是Java中任何基本数据类型。

(2)数据输出流DataOutputStream

类DataOutputStream继承自FilterOutputStream类,并实现了DataOutput接口,其构造

函数为:

public DataOutputStream (OutputStream out) ;

类DataOutputStream中常用的方法主要有:

public void flush () ;

public void write (int b) ;

public void write (byte[] b, int offset, int len) ;

public void writeByte (int v) ;

public void writeBytes (String s) ;

public void writeChar (int v) ;

public void writeChars (String s) ;

当然,写方法中还有写入其他任何一种简单数据类型的方法。

习题8参考答案

1.叙述TextComponent组件的功能。

6

答:TextComponent组件用于编辑文本。

2.TextComponent类包括哪两种子类?

答:TextComponent类包括文本框(TextField)和文本域(TextArea)两种子类。

3.编写一个程序,使用户能够使用鼠标在Applet中绘制一个矩形。按住鼠标左键,确

定矩形左上角,然后拖动鼠标,在需要的位置(即矩形右下角)释放鼠标。另外,在状态栏

中显示矩形面积。

参考程序如下:

import ;

import .*;

import .*;

public class Chp9_3_E extends

MouseListener,MouseMotionListener{

int x1,y1,x2,y2;

public void init(){

addMouseListener(this);

addMouseMotionListener(this);

}

public void paint(Graphics g){

ct(x1,y1,x2,y2);

int area=(x2-x1)*(y2-y1);

showStatus("矩形面积: "+area);

}

//implementation of MouseListener

public void mousePressed(MouseEvent e){

x1=();

y1=();

}

public void mouseClicked(MouseEvent e){}

public void mouseEntered(MouseEvent e){}

public void mouseExited(MouseEvent e){}

public void mouseReleased(MouseEvent e){}

//implementation of MouseMotionEvent

public void mouseDragged(MouseEvent e){

x2=();

y2=();

repaint();

}

public void mouseMoved(MouseEvent e){}

}

Applet implements

7

习题9参考答案

1.简述Java Applet的运行过程。

答:Applet的运行过程:首先将编译好的字节码文件和编写好的HTML文件(其中包含

字节码文件名)保存在Web服务器的合适路径下;当WWW浏览器下载此HTML文件并显

示时,它会自动下载HTML中指定的Java Applet字节码,然后调用内置在浏览器中的Java

解释器来解释执行下载到本机的字节码程序。

2.举例说明Applet中的参数传递。

答:例如:

import java.applet.*;

import java.awt.*;

public class panuneter extends Applet

{

String input;

public void init()

{

input=getParameter("String");

}

public void paint(Graphics g)

{

g.drawString(input,100,100);

}}

可以使用下面的代码给Applet传递一个参数。这里通过VALUE属性传递了String类型

的输入。NAME指出在Java代码中的参数名。

现在用AppletViewer运行这个程序得到带有文本输出的Applet窗口。这些文本通过

VALUE属性传递给Applet。如果我们要改变参数值我们可以改变HTML文件自身中的

VALUE属性的值并通过但单独运行该HTML文件获得输出。无需再重新编译程序。这是参

数传递的主要优点。

3.编写一个Apple程序,用来显示与Applet程序同一个文件夹下的图片。

参考程序如下:

import javawt.*;

import ;

public class ImageApplet extends Applet

{

Image image;

public void init()

{

image = getImage(getCodeBase(),"");

}

public void paint(Graphics g)

8

{

setBackground(ray);

ring("The following is a image",40,20);

age(image,20,30,150,100,this);

}

}

习题10参考答案

1.异常处理可分成哪两种?

答:异常处理可分成运行时的异常处理(RuntimeException)及检查异常处理

(CheckedExceptions)两种。

2.下列哪一个是运行时的异常处理?哪一个是检查异常处理?

ArithmeticException、InterruptedException、ClassNotFoundException、ClassCastException。

答:(1)运行时的异常处理——ArithmeticException、ClassCastException。

(2)检查异常处理——IntermptedException、ClassNotFoundException。

9

本文标签: 文件方法数据对象类型