JAVA各章习题及答案 -

第7章 内部类与异常类

一、选择题

1.关于异常的含义,下列描述中最正确的一个是( D )。 A.程序编译错误 B.程序语法错误

C.程序自定义的异常事件 D.程序编译或运行时发生的异常事件

【解析】异常就是程序编译或运行时发生的异常事件。 2.自定义异常时,可以通过对下列哪一项进行继承?( C )

A.Error类 B.Applet类

C.Exception类及其子类 D.AssertionError类 【解析】自定义异常类时,该类必须继承Exception类及

4.运行下面程序时,会产生什么异常?( A )

public class X7_1_4 {

public static void main(String[] args) { int x = 0; int y = 5/x; int[] z = {1,2,3,4}; int p = z[4]; } }

其子类。

3.对应try和catch子句的排列方式,下列哪一项是正确的?( A )

A.子类异常在前,父类异常在后 B.父类异常在前,子类异常在后 C.只能有子类异常

D.父类和子类不能同时出现在try语句块中

【解析】对应try和catch子句的排列方式,要求子类异常(范围小的异常)在前,父类异常(范围大的异常)在后。

5.运行下面程序时,会产生什么异常?( C )

public class X7_1_5 {

public static void main(String[] args) { int[] z = {1,2,3,4}; int p = z[4]; int x = 0; int y = 5/x; } }

A.ArithmeticException B.NumberFormatException

C.ArrayIndexOutOfBoundsException D.IOException

【解析】当程序执行到“int y = 5/x”语句时,发生异常,程序中止执行,因此发生ArithmeticException异常。 6.下列程序执行的结果是( B )。

A.ArithmeticException B.NumberFormatException

C.ArrayIndexOutOfBoundsException D.IOException 【解析】当程序执行到“int p = z[4]”语句时,发生异常,程序中止执行,因此发生ArrayIndexOutOfBoundsException异常。

public class X7_1_6 { public static void main(String[] args) { try{ return; } finally{ System.out.println(\ } } }

A.程序正常运行,但不输出任何结果 B.程序正常运行,并输出Finally C.编译通过,但运行时出现异常 D.因为没有catch子句,因此不能通过编译

【解析】在执行try-catch-finally语句块时,最后必须执行finally语句块中的内容,而本程序没有异常发生,因此程序正常运行,并输出Finally。

7.下列代码中给出正确的在方法体内抛出异常的是8.下列描述了Java语言通过面相对象的方法进行异常处( B )。 理的好处,请选出不在这些好处范围之内的一项(C) A.new throw Exception(\.throw new Exception(\A.把各种不同的异常事件进行分类,体现了良好的继承C.throws IOException(); D.throws IOException; 性 B.把错误处理代码从常规代码中分离出来 【解析】在方法体内抛出异常时只能使用throw,而不能C.可以利用异常处理机制代替传统的控制流程 使用throws,另外,“new Exception(\\”是创建一个异D.这种机制对具有动态运行特性的复杂程序提供了强有常,因此B是正确的。 力的支持

11

二、填空题 1.异常是在程序编译或运行中所发生的可预料或不可预料的异常事件,出现在编译阶段的异常,称之为 编译时异常 ,出现在运行阶段的异常,称之为 运行时异常 。

2.根据异常的来源,可以把异常分为两种类型: 系统定义的运行时异常 和 用户自定义异常 。 3.所有的Java异常类都是系统类库中的 Exception 类的子类。

4.抛出异常分为 由系统自动抛出异常 、 通过throw抛出异常 以及 通过throws抛出异常 三种情况。 5.Java语言为我们提供了 try?catch 语句和try?catch?finally 语句捕捉并处理异常。 6.一个try块后面可能会跟着若干个 catch 块,每个 catch 块都有一个异常类名作为参数。

7.如果try语句块产生的异常对象被第一个catch块所接收,则程序的流程将 转向第一个catch块 ,catch语句块执行完毕后就 退出当前方法 ,try块中尚未执行的语句和其他的catch块将被 忽略 ;如果try语句块产生的异常对象与第一个catch块不匹配,系统将自动转到 第二个catch块 进行匹配。 8.由于异常对象与catch块的匹配是按照catch块的 先后 顺序进行的,所以在处理多异常时应注意认真设计各catch块的排列顺序。 9.throws语句抛出的异常实际上是由throws语句修饰的方法内部的 throw 语句抛出的,使用throws的主要目的是为了 通知所有预调用此方法的方法 。

三、判断题

1.捕获异常try语句后面通常跟有一个或多个catch()方法用来处理try块内生成的异常事件。( √ ) 2.使用try-catch-finally语句只能捕获一个异常。( × ) 3.try-catch语句不可以嵌套使用。( × )

4.Error类所定义的异常是无法捕获的。( √ )

5.IOException异常是非运行时异常,必须在程序中抛弃或捕获。( √ ) 6.用户自定义异常类是通过继承Throwable类来创建的。( × )

7.当一个方法在运行过程中产生一个异常,则这个方法会终止,但是整个程序不一定终止运行。( √ )

12

第8章 输入流与输出流

一、选择题

1.下列数据流中,属于输入流的一项是( B )。

A.从内存流向硬盘的数据流 B.从键盘流向内存的数据流 C.从键盘流向显示器的数据流 D.从网络流向显示器的数据流

【解析】输入流是指从外围设备流向主机(包括CPU和内存)的数据流。

4.下列程序从标准输入设备读入一个字符,然后再输出到显示器,选择正确的一项填入―//x‖处,完成要求的功能( B )。

import java.io.*; public class X8_1_4 { public static void main(String[] args) { char ch; try{ //x System.out.println(ch); } catch(IOException e){ e.printStackTrace(); } } }

A.ch = System.in.read(); B.ch = (char)System.in.read();

C.ch = (char)System.in.readln(); D.ch = (int)System.in.read(); 【解析】System.in.read()方法返回的是字符对应的Unicode码,即返回的类型是int型,而ch是char类型,因此必须把方法的返回值强制转换为char类型才能把它赋值给ch变量。另外,System.in对象中没有readln()方法。

6.下列流中哪一个使用了缓冲区技术( A )?

A.BufferedOutputStream B.FileInputStream

C.DataOutputStream D.FileReader

【解析】只有BufferedOutputStream使用了缓冲区技术。 7.能读入字节数据进行Java基本数据类型判断过虑的类是( C )。

A.BufferedInputStream B.FileInputStream C.DataInputStream D.FileReader

2.Java语言提供处理不同类型流的类所在的包是( D )。

A.java.sql B.java.util C.java.net D.java.io 【解析】java.io 包是Java语言提供处理不同类型流的类所在的包。

3.不属于java.io包中的接口的是( C )。

A.DataInput B.DataOutput C.DataInputStream D.ObjectInput

【解析】DataInputStream是java.io包中的一个类,其他三个则是java.io包中的接口。

5.下列程序实现了在当前包dir815下新建一个目录subDir815,选择正确的一项填入程序的横线处,使程序符合要求( D )。

package dir815; import java.io.*;

public class X8_1_5 { public static void main(String[] args){ char ch; try{ File path = ; if(path.mkdir()) System.out.println(\ } catch(Exception e){ e.printStackTrace(); } } }

A.new File(\ B.new

File(\

C.new File(\ D.new File(\

【解析】在程序中,目录之间的连接符是“\\\\”或“/”,因此首先排除B和C;而默认情况下,创建相对目录是在当前目录下进行,而dir815也在当前目录下,因此要在dir815下创建新的目录,就必须使用D的形式。

8.使用哪一个类可以实现在文件的任一个位置读写一个记录( B )?

A.BufferedInputStream B.RandomAccessFile

C.FileWriter D.FileReader

【解析】只有RandomAccessFile才能实现在文件的任一个位置读写一个记录。

13

9.在通常情况下,下列哪个类的对象可以作为BufferedReader类构造方法的参数( C )?

A.PrintStream B.FileInputStream C.InputStreamReader D.FileReader

【解析】InputStreamReader类的对象可以作为BufferedReader类构造方法的参数。 10.若文件是RandomAccessFile的实例f,并且其基本文件

长度大于0,则下面的语句实现的功能是( B )。

f.seek(f.length()-1);

A.将文件指针指向文件的第一个字符后面 B.将文件指针指向文件的最后一个字符前面 C.将文件指针指向文件的最后一个字符后面 D.会导致seek()方法抛出一个IOException异常

【解析】通过调用f对象的length()方法,可以将文件指针指向文件的末尾,因此f.length()-1即指向文件的最后一个字符前面。

11.下列关于流类和File类的说法中错误的一项是( B )。

A.File类可以重命名文件 B.File类可以修改文件内容 C.流类可以修改文件内容 D.流类不可以新建目录 【解析】只有流类可以修改文件内容,而File类则不能。

12.若要删除一个文件,应该使用下列哪个类的实例( B )?

A.RandomAccessFile B.File C.FileOutputStream D.FileReader

【解析】要删除文件以及查看文件属性等,应使用File类对象来实现。

13.下列哪一个是Java系统的标准输入流对象( )?

A.System.out B.System.in C.System.exit D.System.err

【解析】System.in是Java系统的标准输入流对象,而System.out和System.err则是Java系统的标准输出流和标准错误对象,System.exit则是System类的退出方法。

14.Java系统标准输出对象System.out使用的输出流是( A )。

A.PrintStream B.PrintWriter

C.DataOutputStream D.FileReader

【解析】System.out属性是PrintStream类型的对象。

二、填空题

1.Java的输入输出流包括 字节流 、 字符流 、 文件流 、 对象流 以及多线程之间通信的 管道流 。 2.凡是从外部设备流向中央处理器的数据流,称之为 输入 流;反之,称之为 输出 流。 3.java.io包中的接口中,处理字节流的有 DataInput 接口和 DataOutput 接口。

4.所有的字节输入流都从 InputStream 类继承,所有的字节输出流都从 OutputSteam 类继承。

5.与用于读写字节流的InputStream类和OutputStream类相对应,Java还提供了用于读写Unicode字符的字符流 Reader

类和 Writer 类。

6.对一般的计算机系统,标准输入通常是 键盘 ,标准输出通常是 显示器 。

7.Java系统事先定义好两个流对象,分别与系统的标准输入和标准输出相联系,它们是 System.in 和 System.out 。 8.System类的所有属性和方法都是 Static类型 的,即调用时需要以类名System为前缀。

9.Java的标准输入System.in是 InputStream 类的对象,当程序中需要从键盘读入数据的时候,只需调用System.in的

read 方法即可。

10.执行System.in.read()方法将从键盘缓冲区读入一个 字节 的数据,然而返回的却是16比特的 整形量 ,需要注意的是只有这个 整形量 的低位字节是真正输入的数据,其高位字节 全部为0 。

11.System.in只能从键盘读取 二进制 的数据,而不能把这些比特信息转换为整数、字符、浮点数或字符串等复杂数据类型的量。

12.Java的标准输出System.out是 PrintStream 类的对象。 PrintStream 类是过滤输出流类FilterOutputStream的一个

子类,其中定义了向屏幕输送不同类型数据的方法 print() 和 println() 。 13.在Java中,标准错误设备用 System.err 表示。它属于PrintStream 类对象。

14.在计算机系统中,需要长期保留的数据是以 文件 的形式存放在磁盘、磁带等外存储设备中的。

15. 目录 是管理文件的特殊机制,同类文件保存在同一 目录 下可以简化文件的管理,提高工作效率。

16.Java语言的java.io包中的 File 类是专门用来管理磁盘文件和目录的。调用 File 类的方法则可以完成对文件或目录的常用管理操作,如创建文件或目录、删除文件或目录、查看文件的有关信息等。

17.File类也虽然在java.io包中,但它不是InputStream或者OutputStream的子类,因为它不负责 数据的输入输出 ,而

专门用来管理 文件和目录 。

18.如果希望从磁盘文件读取数据,或者将数据写入文件,还需要使用文件输入输出流类

14

FileInputStream 和 FileOutputStream 。

19.Java系统提供的FileInputStream类是用于读取文件中的 字节 数据的 字节 文件输入流类;FileOutputStream类是

用于向文件写入 字节 数据的 字节 文件输出流。

20.利用 DataInputStream 类和 DataOutputStream 类提供的成员方法可以方便地从文件中读写不同类型的数据。 21.Java中的 RandomAccessFile 类提供了随机访问文件的功能,它继承了 Object 类,用 DataInput 和 DataOutput

接口来实现。

三、判断题

1.文件缓冲流的作用是提高文件的读/写效率。( √ ) 2.通过File类可对文件属性进行修改。( √ ) 3.IOException必须被捕获或抛出。( √ )

4.Java系统的标准输入对象是System.in,标准输出对象有两个,分别是标准输出System.out和标准错误输出System.err。( √ )

5.对象串行化机制是指将程序中对象的状态转化为一个字节流,存储在文件中。( √ ) 6.Serializable接口是个空接口,它只是一个表示对象可以串行化的特殊标记。( √ )

15

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4