二级JAVA笔试输入输出及文件操作线程与对象串行化.docx
- 文档编号:24574335
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:35
- 大小:26.98KB
二级JAVA笔试输入输出及文件操作线程与对象串行化.docx
《二级JAVA笔试输入输出及文件操作线程与对象串行化.docx》由会员分享,可在线阅读,更多相关《二级JAVA笔试输入输出及文件操作线程与对象串行化.docx(35页珍藏版)》请在冰豆网上搜索。
二级JAVA笔试输入输出及文件操作线程与对象串行化
二级JAVA笔试-输入/输出及文件操作、线程与对象串行化
(总分:
99.00,做题时间:
90分钟)
一、{{B}}选择题{{/B}}(总题数:
54,分数:
99.00)
1.下列类中属于字节输入抽象类的是______。
∙A.FileInputStream
∙B.ObjectInputStream
∙C.FilterInputStream
∙D.InputSream
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]InputStream是处理字节输入流的抽象类。
其他三个选项中,FileInputStream处理一个磁盘文件涉及的数据,ObjectInputStream处理对象输入流,FilterInputStream是过滤字节输入流的抽象类。
2.能向内存直接写入数据的流是______。
∙A.FileOutputStream
∙B.FilelnputStream
∙C.ByteArrayOutputStream
∙D.ByteArraylnputStream
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]ByteArrayOutputStream可以向内存中直接写入数据。
其他三个选项中,FileOutputStream向一个文件对象中写入数据,FileInputStream处理一个磁盘文件涉及的数据,ByteArraylnputStream可以从字节数组中读取数据。
3.阅读如下程序。
importjava.io.*;
publicclassByteStreamTest
{
publicstaticvoidmain(String[]a)
{
int[]myArray={10,20,30,40};
try
{
DataOutputStreamdos=newDataOutputStream
(new______("ints.dat"));
for(inti=0;i<myArray.length;i++)
dos.writeInt(myArray[i]);
dos.close();
System.out.println("Havewrittenbinaryfileints.dat");
}
catch(IOExceptionioe)
{
System.out.println("IOException");
}
}
}
为保证程序正确运行,在程序中下划线处应填入的代码是______。
∙A.FileOutputStream
∙B.ByteArrayOutlputStream
∙C.BufferedOutputStream
∙D.FileWriter
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]由题知,本程序功能是把数组myArray中的内容写入ints.dat中,因为FileInputStream可以向文件对象中写入数据,所以选项A正确。
4.在读取二进制数据文件的记录时,为了提高效率常常使用一种辅助类______。
∙A.InputStream
∙B.FileInputStream
∙C.StringBuffer
∙D.BufferedReader
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]BufferedReader类可以基于字符输入流生成相关缓冲流,提高输入效率。
5.在程序读入字符文件时,能够以该文件作为直接参数的类是______。
∙A.FileReader
∙B.BufferedReader
∙C.FileInputStream
∙D.ObjectInputStream
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]FileReader是InputStreamReader的子类,用于从文件中读取文本,其使用方式是“FileReader(fname)”,fname是待读取的文件名。
BufferedReader类用于读取缓冲区中的字符输入流,其使用方式是“BufferedReader(newInputStreamReader(System.in))”,其参数是以字节输入流为数据源的字符输入流。
FileInputStream用于读取磁盘文件所涉及的数据,读取字节数据而不是字符数据。
ObjectInputStream类实现了ObjectInput接口,用于读取对象流。
6.字符输出流类的直接父类是______。
∙A.Writer
∙B.Reader
∙C.File
∙D.IOStream
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]所有字符输出类的父类是Reader,因此几乎所有字符输出类都是以Reader结尾的。
7.下列代码的下划线处应填入的是______。
publicclassChouti
{
publicstaticvoidmain(Stringargs[])throwsException
{InputStreamReaderir;
BufferedReaderin;
ir=new______(System.in);
in=newBufferedReader(ir);System.out.println("请输入:
");
Stringstr=in.readLine();
System.out.println(str);
}
}
∙A.BufferedReader
∙B.InputStreamReader
∙C.InputStream
∙D.OutputStream
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]固定用法,字符流要套用一个字节才能使用。
8.下列关于RandomAccessFile类的叙述中,不正确的是______。
∙A.RandomAccessFile类可以随机访问文件
∙B.RandomAccessFile类实现DataInput和DataOutput接口
∙C.RandomAccessFile类不能写文件
∙D.RandomAccessFile类兼有输入/输出功能
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]RandomAccessFile提供了对文件随机访问的功能,它继承了Objects类,实现了DataInput和DataOutput接口,因此RandomAccessFile类兼有输入/输出功能,可以访问文件的任意位置。
9.RandomAccessFile类中seek()方法的作用是______。
∙A.跳过指定字节
∙B.查找文件记录
∙C.获取文件长度
∙D.读取文件内容
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]RandomAccessFile类具有以下常用方法。
1)length():
获取文件长度。
2)seek():
查找文件记录。
3)close():
关闭文件资源。
4)readDouble()、readInt()、readChar():
读取文件内容。
5)skipBytes():
跳过指定字节。
10.下列关于File类的叙述中,正确的是______。
∙A.File类是java.io.file包中的非流类
∙B.File类以系统相关的方式描述文件对象的属性
∙C.File类不能读/写文件
∙D.File类不能操作文件属性
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]File类是java.io包中的非流类,它以系统无关的方式描述文件对象的属性。
目录是Java中一种特殊的文件,File类封装对文件系统操作的功能,具有以下常用方法。
1)操作文件名方法:
getName()、getParent()、getParentFile()、getPath()、getCanonicalPath()、renameTo()、getCanonicalFile()、getAbsolutePath()和getAbsoluteFile()。
2)操作文件属性方法:
isDirectory()、isFile()、isAbsolute()、exists()、canRead()、canWrite()、hashCode()、setLastModified()和setReadOnly()。
3)操作文件信息方法:
delete()、deleteOnExit()、length()和lastModified()。
4)操作目录方法:
mkdir()、mkdirs()、list()和listRoots()。
从以上信息可以看出,File类可以操作文件名、文件属性、文件信息以及文件目录,但不能读写文件的具体内容。
11.关于java.io包中的抽象类,以下叙述正确的是______。
∙A.字符流具有抽象类InputStream和OutputStream
∙B.字节流具有抽象类Reader和Writer
∙C.过滤流具有抽象类FilterOutputStream和FilterlnputStream
∙D.压缩流具有抽象类InCompressInputStream和DeInCompressOutputStream
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]FilterInputSream和FilterOuputStream抽象类及其子类是过滤流类,它们保证某I/O流只能同时被一个线程访问,从而为Java对I/O的同步处理机制提供保障。
使用过滤流时先把过滤流连接到某个I/O流上,再通过构造方法的参数去指定连接的I/O流。
12.下列叙述中,正确的是______。
∙A.Serializable是一个处理字节流的一般类
∙B.Serializable是一个处理对象流的抽象类
∙C.Serializable是一个处理非流类的接口
∙D.Serializable是一个处理对象流的接口
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]java.io包中具有如下接口。
1)处理字节流的DataInput和DataOutput接口。
2)处理对象流的ObjectInput和ObjectOutput接口。
3)筛选文件名的FileNameFilter接口。
4)处理对象流的Serializable接口。
该接口是对象序列化开关,不含任何抽象方法或常量,输入/输出的对象在传输前都必须实现该接口。
13.下列关于字符流的叙述中,正确的是______。
∙A.字符流类BufferedReader可以提高字符传送的效率
∙B.字符输入流首先要实现DataInput接口
∙C.字节输入流都是Reader的子类
∙D.只有字节输入流具有read()方法,字符输入流不具有该方法
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]在字符流的众多类中,类名中有buffer的类,在处理I/O时大多具有缓冲功能,可以提高I/O的传输效率。
所以本题中A选项说法“字符流类BufferedReader可以提高字符传送的效率”是正确的。
14.以下关于管道流的叙述,正确的是______。
∙A.将一个程序、线程或代码段的输入作为另一个程序、线程或代码段的输出
∙B.管道流的输入流称为发送方,输出流称为接收方
∙C.在java.io中,管道流类有PipedInputStream类和PipedOutputStream类
∙D.过滤流可以直接操作文件
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]一个程序、线程或代码段的输出是另一个程序、线程或代码段的输入,这就是管道。
它的输出流称为发送方,输入流称为接收方。
java.io中提供了PipedInputStream和PipedOutputStream类作为管道的I/O构件。
15.下列叙述中,错误的是______。
∙A.所有字节输入流都从InputStream类继承
∙B.所有字节输出流都从OutputStream类继承
∙C.所有字符输出流都从OutputStreamWriter类继承
∙D.所有字符输入流都从Reader类继承
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]所有字符输出流都从Writer类继承。
16.Java对文件类提供了许多操作方法,能获得文件对象父路径名的方法是______。
∙A.getAbsolutePath()
∙B.getParentFile()
∙C.getAbsoluteFile()
∙D.getName()
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]可以获得文件对象父路径名的方法是getParentFile()。
17.请阅读如下程序。
importjava.io.*;
publicclassExceptionCatch
{
publicstaticvoidmain(Stringargs[])
{
try
{
FileInputStreamfis=newFilelnputStream("text");
System.out.println("contentoftextis:
");
}
catch(FileNotFoundExceptione)
{
System.out.println(e);
System.out.println("message:
"+e.getMessageQ);
e.printStackTrace(System.out);
}
{
System.out.println(e);
}
}
}
为保证程序正确运行,程序中下划线处的语句应是______。
∙A.catch(FileInputStreams)
∙B.e.printStackTrace()
∙C.catch(IOExceptione)
∙D.System.out.println(e)
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]题中程序的最后一个语句体“{System.out.println(e);}”表示另一个catch从句的开始,catch从句由catch引导,并且要先捕获异常,所以选项C正确。
18.已知zipname是一个压缩文件名,则zipname在下列代码中出现的正确位置是______。
ZipInPutStreamzin=newZipInPutStream(newFileInPutStream(①));
ZipEnatryentry;
While((entry=zin.getNextEntry(②))!
=null{
fileCombo.addItem(entry.getName(③));
zin.closeEntry(④);
}
Zin.close();
∙A.①
∙B.②
∙C.③
∙D.④
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]FileInPutStream的构造函数需要带上文件名,所以选A。
19.要得到某目录下的所有文件名,在下列代码的下划线处应填入的内容是(两个下划线的内容相同)______。
______pathname=new______(args[0]);
String[]filename=pathname.list();
∙A.FileInputStream
∙B.FileOutputStream
∙C.File
∙D.RandomAccessFile
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]定义一个文件夹,列出文件夹下的文件名称。
20.java.io包的File类是______。
∙A.字符流类
∙B.字节流类
∙C.对象流类
∙D.非流类
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]本题考查java.io包中的File类。
文件类File是java.io包中一个重要的非流类,该类封装对文件系统进行操作的功能,核心是文件在磁盘上的存储。
21.运行下列程序时,若没有test.dat文件,则______。
publicclassTest{
try{
RandomAccessFileraf=newRandomAccessFile("test.dat","r");
System.out.println("test.dat");
}
catch(Exceptionex){
System.out.println("exception");
}
}
∙A.输出exception
∙B.输出test.dat
∙C.输出IOException
∙D.无显示
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]catch中如果catch的是子类,那么当try不是这个catch类及其子类的时候就会捕获不住。
找不到文件报的错误是FileNotFoundException,是IOException的子类,因此这里异常被捕获后会打印出一个exception。
22.下列关于过滤流的叙述中,不正确的是______。
∙A.过滤流提供了同步处理机制,保证某I/O流只能同时被一个线程访问
∙B.过滤流可以使用文件作为构造函数的参数
∙C.过滤流是FilterInputSream和FilterOuputStream抽象类及其子类
∙D.使用过滤流时先把过滤流连接到某个I/O流上
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]FilterInputSream和FilterOuputStream抽象类及其子类是过滤流类,它们保证某I/O流只能同时被一个线程访问,从而为Java对I/O的同步处理机制提供保障。
使用过滤流时先把过滤流连接到某个I/O流上,再通过构造方法的参数去指定连接的I/O流。
23.关于MappedByteBuffer类,下列叙述正确的是______。
∙A.可以提高读/写速度
∙B.提供了把磁盘文件映入内存的通道
∙C.把内存缓冲区的内容映射到了磁盘文件上
∙D.具有map()方法,可以将文件映入内存
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]MappedByteBuffer类又名内存映射缓冲器,作用为表示一个磁盘文件在内存缓冲区的一个字节映像,从而提高读/写速度。
24.下列关于CRC32类的叙述,错误的是______。
∙A.CRC32类用于计算数据的CRC编码值
∙B.归属包是java.util.crc
∙C.具有方法getValue(),用于获取CRC的校验值
∙D.具有方法update(),用指定字节进行CRC更新
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]CRC用于数字传输技术领域,其目的是保障传输的可靠性。
CRC32类用于计算数据的CRC编码值。
其归属包为java.util.zip。
常用方法包括voidupdate(intc),用指定字节进行CRC更新;longgetValue(),获取CRC的校验值。
25.下列方法被调用后,一定使调用线程改变当前状态的是______。
∙A.notify()
∙B.yield()
∙C.sleep()
∙D.isAlive()
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]yield会暂停执行,而其他3个选项的方法都不会立刻改变状态。
26.下面的程序中需要对Employee的对象进行存储,请在下划线处填入正确选项。
classEmployeeimplements______
{
...
}
∙A.Comparable
∙B.Serializable
∙C.Cloneable
∙D.DataInput
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]存储对象的关键是完成对象串行化,在定义可串行化类时,需要在类的定义中增加implementsSerializable的子句。
27.阅读如下程序。
classTestimplementsRunnable
{
publicstaticvoidmain(String[]args;
{
Testt=newTest();
t.start();
}
publicvoidrun(){}
}
下列关于上述程序的叙述正确的是______。
∙A.程序不能通过编译,因为start()方法在Test类中没有定义
∙B.程序编译通过,但运行时出错,提示start()方法没有定义
∙C.程序不能通过编译,因为run()方法没有定义方法体
∙D.程序编译通过,且运行正常
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]新建的线程不会自动运行,必须调用线程的start()方法,该方法把嵌入在线程中的虚拟CPU置为可运行状态,使其可以被JVM运行。
本题中的程序缺少start()方法的定义,所以不能通过编译。
28.如果使用“Threadt=newTest()”语句创建一个线程,则下列叙述正确的是______。
∙A.Test类一定要实现Runnable接口
∙B.Test类一定是Thread类的子类
∙C.Test类一定是Runnable的子类
∙D.Test类一定是继承Thread类并且实现Runnable接口
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]由题可知,Test类继承了Thread类,并且已经实现了Runnable接口。
29.下列方法中,声明抛出InterruptedException类型异常的方法是______。
∙A.suspend()
∙B.resume()
∙C.sleep()
∙D.start()
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]如果一个线程在调用sleep()、join()、wait()等方法被阻塞时,就会抛出Interrupted-Exception类型异常。
30.如果线程正处于运行状态,可使线程进入阻塞状态的方法是______。
∙A.yield()
∙B.star
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 JAVA 笔试 输入输出 文件 操作 线程 对象 串行
![提示](https://static.bdocx.com/images/bang_tan.gif)