一. 单选题
- (单选题)下列数据结构中,哪一个是ArrayList类的底层实现(A )
A. 数组结构
B. 链表结构
C. 哈希表结构
D. 红黑树结构
答案解析:ArrayList的底层是数组实现的。
- (单选题)下面关于List集合的描述中,哪一个是错误的(D )
A. List集合是有索引的
B. List集合可以存储重复的元素
C. List集合存和取的顺序一致
D. List集合没有索引
答案解析:List集合中所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。
- (单选题)下列关于foreach循环的描述,错误的是(B )
A. foreach循环只能用于遍历数组或集合中的元素
B. foreach循环可以直接用于遍历Map集合中的元素
C. 相当于传统for循环来说,foreach循环简化了书写
D. foreach循环遍历过程中不能对集合或数组元素进行修改
答案解析:数组或者实现Iterable接口的对象才能使用foreach循环,Map集合不符合要求,显然不能直接使用foreach循环。
- (单选题)下列关于集合的描述中,哪一个是错误的(D )
A. 集合按照存储结构可以分为单列集合Collection和双列集合Map。
B. List集合的特点是元素有序、元素可重复。
C. Set集合的特点是元素无序并且不可重复。
D. 集合存储的对象必须是基本数据类型。
答案解析:集合可以存储多种数据类型的数据,包括引用数据类型。
- (单选题)下列关于LinkedList的描述中,错误的是(C )
A. LinkedList集合对于元素的增删操作具有很高的效率。
B. LinkedList集合中每一个元素都使用引用的方式来记住它的前一个元素和后一个元素。
C. LinkedList集合对于元素的查找操作具有很高的效率。
D. LinkedList集合中的元素索引从0开始。
答案解析:由于LinkedList是双向循环链表结构,他的增删操作效率高但是查询操作没有ArrayList高。
- (单选题)阅读下面的程序
public class Example{
public static void main(String[] args) {
String[] strs = { “Tom”, “Jerry”, “Donald” };
// foreach循环遍历数组
for (String str : strs) {
str = “Tuffy”;
}
System.out.println(strs[0] + “,” + strs[1] + “,” + strs[2]);
}
}
下列选项中,程序的运行结果是(A )
A. Tom,Jerry,Donald
B. Tuffy,Jerry,Donald
C. Tuffy,Tuffy,Tuffy
D. 发生异常,输出异常信息
答案解析:当使用foreach循环遍历集合和数组时,只能访问集合中的元素,不能对其中的元素进行修改。但是像本题程序中那样尝试进行修改,并不会发生异常,只是对元素的修改不成功,集合或数组中的元素仍然是从前的值。
- (单选题)下面哪个对象不能直接获取java.util.Iterator迭代器进行迭代( D)
A. java.util.HashSet
B. java.util.ArrayList
C. java.util.TreeSet
D. java.util.HashTable
答案解析:java.util.Iterator可以对collection接口实现类进行迭代,HashTable不能被直接迭代。
- (单选题)下面关于java.util.HashMap类中的方法描述错误的是(D )
A. containsKey(Objectkey)表示如果此映射包含对于指定的键,则返回true
B. remove(Objectkey)表示从此映射中移除指定键的映射关系(如果存在)
C. size()表示返回此映射中的键-值映射关系数
D. values()表示返回此映射所包含的键的Collection视图
答案解析:values()表示返回此映射所包含的值的Collection视图,而不是键的Collection视图。
- (单选题)Java语言中,集合类都位于哪个包中(A )
A. java.util
B. java.lang
C. java.array
D. java.collections
答案解析:集合类都位于java.util包中。
- (单选题)import java.util.*;
class HashSetDemo{
public static void main(String[] args){
HashSet hs = new HashSet();
hs.add(“abc”);
hs.add(“abc”);
System.out.println(hs);
}
}
下列选项中,哪一个是程序的运行结果(A )
A. [abc]
B. [abc,abc]
C. 编译失败
D. 运行成功,无输出结果
答案解析:Set集合中存储的是不重复元素。
- (单选题)下列选项中,哪个可以正确地定义一个泛型(A )
A. ArrayList list = new ArrayList();
B. ArrayList list = new ArrayList ();
C. ArrayList list = new ArrayList();
D. ArrayList list = new ArrayList ();
正确答案:
答案解析:在定义集合类时,可以使用“<参数化类型>”的方式指定该类中方法操作的数据类型,具体格式如下:ArrayList<参数化类型> list = new ArrayList<参数化类型>();
- (单选题)以下选项中,哪个是FileInputStream的父类(D )
A. File
B. FileOutput
C. OutputStream
D. InputStream
答案解析:FileInputStream是用来读取文件的字节流,属于InputStream类的子类。
- (单选题)阅读下列代码
import java.io.*;
public class Example{
public static void main(String[] args) throws Exception {
// 创建一个带缓冲区的输入流
BufferedInputStream bis = new BufferedInputStream(new ________(“src.txt”));
// 创建一个带缓冲区的输出流
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(“des.txt”));
int len;
while ((len = bis.read()) != -1) {
bos.write(len);
}
bis.close();
bos.close();
}
}
请说出程序中,下划线位置的答案(A )
A. FileInputStream
B. File
C. InputStream
D. 以上答案都不正确
答案解析:BufferedInputStream需要接受一个InputStream对象,但是InputStream是抽象类,必须传入其实例化对象,FileInputStream是其实例化子类。所以这里选A。
- (单选题)以下选项中,哪个是File类中isFile()方法返回值的类型(B)
A. int
B. boolean
C. Integer
D. String
答案解析:isFile()方法表示判断File对象是否是标准文件,其返回值类型是boolean。
- (单选题)下列选项中,不属于FileReader类的方法的是(C )
A. read()
B. close()
C. readLine()
D. toString()
答案解析:FileReader类中的read()和close()方法继承自 InputStreamReader,toString()继承自Object类。
- (单选题)File类中以字符串形式返回文件绝对路径的的方法是(D )
A. getName()
B. getParent()
C. getPath()
D. getAbsolutePath()
答案解析:getPath()表示获取File对象的相对路径
getName()表示获取File对象的名称
getParent()表示获取File对象的父级目录的路径
- (单选题)下列说法中,关于在Java中删除目录说法错误的是(D )
A. 在Java中删除目录是从虚拟机直接删除不走回收站,文件将无法恢复
B. File类的delete()方法不允许对还有子文件的目录直接删除
C. delete()方法可以删除一个指定的文件
D. 在删除目录时,先删除这个目录再删除该目录下的所有文件
答案解析:在删除目录时,删除完一个目录里的所有文件后,才能删除这个目录。
- (单选题)下列关于java.io.FileOutputStream的说法错误的是(D )
A. 文件拷贝时,使用输入流读取的文件必须存在。否则抛出java.io.FileNotFoundException。
B. 文件拷贝时,使用输出流进行文件写出的时候,目标文件名称可以与原文件不同名。
C. 使用字节流进行文件的拷贝,文件既可以是文本文件也可以是图片、音频等文件。
D. 使用IO流进行文件拷贝。文件大小不能超过20M,否则内存溢出。
答案解析:只要对文件进行拷贝操作时,字节缓冲区定时刷新就不会出现内存溢出的现象。
- (单选题)下面关于字节流缓冲区的说法错误的是(A )
A. 使用字节流缓冲区读写文件是一个字节一个字节的读写。
B. 使用字节流缓冲区读写文件时,可以一次性读取多个字节的数据。
C. 使用字节流缓冲区读写文件,可以大大的提高文件的读写操作。
D. 字节流缓冲区就是一块内存,用于存放暂时输入输出的数据。
答案解析:使用字节流缓冲区读写文件时,可以一次性读取多个字节的数据,并保存在字节数组中,然后将字节数组中的数据一次性写入文件。
- (单选题)假设在E盘下的cn文件夹中有文件abc.txt,则下列代码的运行结果为(A )
class Example {
public static void main(String[] args) {
File file = new File(“E:\cn”); // 这是一个代表目录的File对象
if (file.exists()) {
System.out.println(file.delete());
}
}
}
A. false文件夹删除不成功,abc.txt删除不成功
B. false文件夹删除不成功,abc.txt删除成功
C. true文件夹删除成功
D. true文件夹删除不成功,abc.txt删除成功
答案解析:运行结果中输出了false,这说明删除文件失败了。因为File类的delete()方法只是删除一个指定的文件,假如File对象代表目录,并且目录下包含子目录或文件,则File类的delete()方法不允许对这个目录直接删除。
- (单选题)使用FileReader读取reader.txt文本文件中的数据,reader.txt中的内容为:abc
import java.io.*;
public class Example01 {
public static void main(String[] args) throws Exception {
FileReader reader = new FileReader(“reader.txt”);
int ch;
while ((ch = reader.read()) != -1) {
System.out.print(ch+" ");
}
reader.close();
}
}
运行以上程序的结果是(C )
A. 编译出错
B. abc
C. 979899
D. 无输出
答案解析:字符输入流的read()方法返回的是int类型的值,如果想获得字符就需要进行强制类型转换,在程序中将变量ch转为char类型再打印。
- (单选题)FileWriter类的write(int c)方法的作用是(D )
A. 写出单个字符
B. 写入多个
C. 写入一个整形数据
D. 写入单个字符
答案解析:write(int c)方法用于写入单个字符。
- (单选题)以下关于File类的isDirectory ()方法的描述,哪个是正确的(B )
A. 判断该File对象所对应的是否是文件。
B. 判断该File对象所对应的是否是目录。
C. 返回文件的最后修改时间。
D. 在当前目录下生成指定的目录。
答案解析:isDirectory()方法用于判断File对象是否为文件夹,返回值为boolean类型。
二. 判断题
-
(判断题)StringBuffer类似一个字符容器,当在其中添加或删除字符时,并不会产生新的StringBuffer对象。 √
-
(判断题)包装类可以将基本数据类型的值包装为引用数据类型的对象。√
-
(判断题)String类的equals()方法比较的是两个字符串内容、“==”比较的是两个对象的地址值。 √
-
(判断题)List集合可以使用ListIterator接口中的方法进行元素的反向迭代。√
-
(判断题)由于LinkedList的底层是链表实现的,所以他的增删比较快,查询比较慢。√
-
(判断题)HashSet是Set接口的一个实现类,它所存储的元素是可重复的,并且元素都是无序的。√
-
(判断题)HashMap集合迭代出来元素的顺序和存入的顺序是不一致的。如果想要存入顺序和迭代的顺序一致可以使用使用Java中提供的LinkedHashMap类,它是HashMap的子类。 √
-
(判断题)File类内部封装的路径可以指向一个文件,也可以指向一个目录。√
-
(判断题)在java语言中使用IO流进行文件的拷贝时可能会出现IO异常,必须对异常进行try{}catch(){}处理或者抛出异常。√