概述
集合
+IO
部分
共40
道选择题 (30*1)
- 单列集合的顶层接口是( )
- Map
- Collection
- List
- Set
- ArrayList类的底层数据结构是( )
- 数组结构
- 链表结构
- 哈希表结构
- 红黑树结构
- LinkedList类的特点是( )
- 查询快
- 增删快
- 元素不重复
- 元素自然排序
- Vector类的特点是( )
- 线程同步
- 线程不同步
- 增删快
- 底层是链表结构
- 关于迭代器说法错误的是( )
- 迭代器是取出集合元素的方式
- 迭代器的hasNext()方法返回值是布尔类型
- List集合有特有迭代器
- next()方法将返回集合中的上一个元素
- FileReader类描述正确的是( )
- 字节输入流
- 字符输入流
- 打印流
- 序列化流
- 具有readLine()方法的类是( )
- FileWriter
- InputStreamReader
- FileReader
- BufferedReader
- 关于newLine()方法描述错误的是( )
- newLine()方法写入换行
- newLine()方法与操作系统平台无关
- newLine()方法是FileWiter类的方法
- newLine()方法是BufferedWriter类的方法
- 下面代码运行的结果是( )
ArrayList<String> al = new ArrayList<String>();
al.add(true);
al.add(123);
al.add(“abc”);
System.out.println(al);
- 编译失败
- [true,123]
- [true,123,abc];
- [abc];
- 实现下列哪个接口,可以启用序列化功能( )
- Runnable接口
- Comparable接口
- Serializable接口
- Comparator接口
- 字节输出流的抽象基类是( )
- OutputStream类
- InputStream类
- Writer类
- Reader类
- 下面程序的运行结果是( )
FileOutputStream fos = new FileOutputStream(“c:\demo.txt”);
fos.write(“abc”.getBytes);
fos.close();
- 在C盘创建文件demo.txt,但文件是空的
- 在C盘创建文件demo.txt,并写入数据abc
- 将C盘已有的文件demo.txt中追加写入abc
- 编译失败
- 将Map集合中的键存储到Set集合的方法是( )
- entrySet()
- get()
- keySet()
- put()
- ArrayList和Vector的区别说法正确的是( )
- ArrayList是线程安全的,Vector是线程不安全
- ArrayList是线程不安全的,Vector是线程安全的
- ArrayList底层是数组结构,Vector底层是链表结构
- ArrayList底层是链表结构,Vector底层是数组结构
- 存储到TreeSet集合中的对象必须具有( ) 数据结构是红黑树
- 必须实现Comparable接口
- main方法
- get和set方法
- 必须实现Serializable接口
- 将集合转成数组的方法是( )
- asList()
- toCharArray()
- toArray()
- copy()
- 对于增强for循环说法错误的是( )
- 增强for循环可以直接遍历Map集合
- 增强for循环可以操作数组
- 增强for循环可以操作Collection集合
- 增强for循环是JDK1.5版本后出现的
- 对于HashMap集合说法正确的是( )
- 底层是数组结构
- 底层是链表结构
- 可以存储null值和null键
- 不可以存储null值和null键
- Collections工具类中的binarySearch()方法描述正确的是( )
- binarySearch()方法只能操作Set集合
- binarySearch()方法只能操作List集合
- binarySearch()方法只能操作Map集合
- binarySearch()可以操作所有的集合
- 下面代码的运行结果是( )
ArrayList al = new ArrayList();
al.add(“a”);
al.add(“b”);
al.add(“c”);
Iterator it = al.iterator();
while(it.hasNext()){
String s = (String)it.next();
if(s.equals(“c”)){
al.add(“c1”);
}
}
System.out.println(al)
- [a,b,c]
- [c1]
- [a,b,c,c1]
- 抛出ConcurrentModificationException异常
- Properties类中的哪个方法可以和IO流相关联( )
- getProperty()
- setProperty()
- load()
- stringPropertyNames()
- 以下哪两个流对象可以实现任意类型文件的成功复制( )
- FileReader 和 FileWriter
- FileInputStream和FileOutputStream
- BufferedRead和 BufferedWriter
- InputSteamReader和OutputStreamWriter
- 下面哪个流是字节通向字符的桥梁( )
- InputStreamReader
- OutputStreamWriter
- LineNumberReader
- ObjectInputStream
- 关于对象的序列化说法错误的是( )
- 实现序列化的对象必须实现Serializable接口
- 实现序列化的对象必须自定义序列号
- ObjectOutputStream中的writeObject()方法可以将对象写出
- ObjectInputStrean中的readObject()方法可以读取对象
- 关于Map.Entry接口说法错误的是( )
- 具有getkey()方法
- 具有getValue()方法
- 具有keySet()方法
- 具有setValue()方法
- Set集合的特点是( )
- 元素有序
- 元素无序,不存储重复元素
- 存储重复元素
- Set集合都是线程安全的
- 关于将数组转成集合后,不可以进行的操作是( )
- 增加集合中的元素
- 迭代集合
- 修改集合中的元素
- 获取集合中元素的个数
- 下面代码运行的结果是 ( )
ArrayList<String> al = new ArrayList<>();
al.add("s");
al.add("ddd");
al.add("true");
System.out.println(al);
- 编译失败
- [s,ddd,true]
- [true]
- 运行报错
- 关于字符输入流FileReader描述错误的是( )
- 可以读取文本文件
- 是Reader的子类
- 具有读取一行的方法
- 无法获得要读取文件的字节数
- 使用字符流可以成功复制哪些文件( )
- 文本文件
- 图片文件
- 视频文件
- 以上都可以复制
以下题目为多项选择 (10*2)
- File类中的listFiles()方法说法正确的是( )
- 获取File对象封装的路径下的全部文件和文件夹对象
- 获取File对象封装的路径下的文件
- 该方法返回File类型数组
- 该方法返回String类型数组
- 关于File类中的exists()方法说法错误的是( )
- 判断File对象中封装的路径或者文件是否存在
- 此方法返回boolean类型值
- 判断File对象封装的路径是否是相对路径
- 判断File对象封装的路径是否是绝对路径
- File类中的isDirectory()方法的作用是( )
- 判断File对象封装的是否是文件
- 判断File对象封装的是否是目录
- 判断File对象中封装的是否是根目录
- 返回值类型是boolean
- 关于HashMap集合说法正确的是( )
- HashMap集合是双列集合
- HashMap集合不允许存储重复键
- HashMap集合不允许存储重复值
- HashMap集合线程是安全的
- 下列哪两个方法可以创建目录( )
- createNewFile()
- createTempFile()
- mkdir()
- mkdirs()
- 在进程转换时,下列转换是不可能发生的( )
- 就绪状态->运行状态
- 运行状态->就绪状态
- 阻塞状态->运行状态
- 死亡状态->新生状态
- 关于泛型的说法正确的是( )
- 泛型是JDK1.5出现的新特性
- 泛型是一种安全机制
- 使用泛型避免了强制类型转换
- 使用泛型必须进行强制类型转换
- 关于Properties说法正确的是( )
- 是Hashtable的子类
- 是双列集合
- 可以和IO结合使用
- 是HashMap的子类
- 关于方法的递归算法,说法正确的是( )
- 递归就是方法自己调用自己
- 递归的次数不能过大,否则会导致栈内存溢出
- 使用递归算法,方法必须有返回值
- 构造方法不可以使用递归算法
- List集合的遍历方式有如下哪几种 ( )
- Iterator迭代器实现
- 增强for循环实现
- get()和size()方法结合实现
- get()和length()方法结合实现
二、
看程序写结果
(5*3)
1、
给出以下代码,请问该程序的运行结果是什么?如有问题,请说明原因。
class
Test<T> {
private
T name;
public
T getName() {
return
name;
}
public
void
setName(T name) {
this
.name = name;
}
public
static
void
main(String[] args) {
Test<String> strTest =
new
Test<String>();
strTest.setName("aaa");
System.
out
.println(strTest.getName());
Test<Integer> intTest =
new
Test<Integer>();
intTest.setName(1234);
System.
out
.println(intTest.getName());
}
}
2、
给出以下代码,请问该程序的运行结果是什么?如有问题,请说明原因。
class
Animal {
}
class
Dog
extends
Animal {
}
class
Cat
extends
Animal {
}
class
GenericDemo {
public
static
void
main(String[] args) {
Collection<Object> c =
new
ArrayList<Object>();
Collection<Animal> c1 =
new
ArrayList<Animal>();
Collection<Animal> c2 =
new
ArrayList<Dog>()
;
Collection<?
extends
Animal> c5 =
new
ArrayList<Animal>();
Collection<?
extends
Animal> c6 =
new
ArrayList<Dog>();
Collection<?
extends
Animal> c4 =
new
ArrayList<Object>()
;
Collection<?
super
Animal> c8 =
new
ArrayList<Object>();
Collection<?
super
Animal> c9 =
new
ArrayList<Animal>();
Collection<?
super
Animal> c10 =
new
ArrayList<Dog>()
;
}
}
3、
给出以下代码,请问该程序的运行结果是什么?如有问题,请说明原因。
学生类上面已给出
Student
类
并且重写了
hashCode() ToString()
两个法
public
class
Demo {
public
static
void
main(String[] args) {
HashSet<Student> hs =
new
HashSet<Student>();
hs.add(
new
Student("zhangsan", 19));
hs.add(
new
Student("zhangsan", 19));
hs.add(
new
Student("lisi", 20));
hs.add(
new
Student("wangwu", 22));
for
(Student s : hs) {
System.
out
.println(s);
}
}
}
4、
给出以下代码,请问该程序的运行结果是什么?如有问题,请说明原因。
class
IOTest {
public
static
void
main(String[] args)
throws
IOException {
write
();
read
();
}
public
static
void
write()
throws
IOException {
FileWriter
fw
=
new
FileWriter("d:\fw.txt");
fw.write("hello");
}
public
static
void
read()
throws
IOException {
FileReader
fr
=
new
FileReader("d:\fw.txt");
int
ch = -1;
while
((ch = fr.read()) != -1) {
System.
out
.print((
char
) ch);
}
}
}
5、
给出以下代码,请问该程序的运行结果是什么?如有问题,请说明原因。
class
test {
public
static
void
main(String[] args)
throws
IOException {
write
();
read
();
}
public
static
void
write()
throws
IOException {
BufferedWriter bw =
new
BufferedWriter(
new
FileWriter("d:\bw.txt",
true
));
bw.write("hello");
bw.newLine();
bw.flush();
bw.close();
}
public
static
void
read()
throws
IOException {
BufferedReader br =
new
BufferedReader(
new
FileReader("d:\bw.txt"));
String line =
null
; // String line ;
while
((line = br.readLine()) !=
null
) {
System.
out
.print(line);
}
br.close();
}
}
输出
hello
三、
简答题
(10*2)
1、
请解释,可以把
List<String>
传递给一个接收
List<Object>
参数的方法吗?为什么?
不可以的,两个
list
集合的范型必须一直,范型是作用于元素的,不是本身的类型
2、
请简述
HashSet
是如何保证元素唯一性的
?
HashSet集合的特点是元素无序和不重复 。
首先,HashSet的底层
数据结构
是哈希表。哈希表就是存储一系列哈希值的表,而哈希值是由对象的hashCode()方法生成的。
确保元素唯一性的两个方法,hashCode()和equals()方法。
3、
请说明
Map
接口和
Collection
接口的区别
Map
接口是双列集合顶层接口,每个位置存储一对元素
(key, value)
Collection
接口是单列集合顶层接口,每个位置存储一个元素
4
、说说
throws
与
throw
的区别?
throws
关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。
throw
关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到
throw
语句时立即停止,它后面的语句都不执行。通常
throw
抛出异常后,如果想在上一级代码中捕获并处理异常,则需要在抛出异常的方法中使用
throws
关键字在方法声明中指定要抛出的异常;如果要捕获
throw
抛出的异常,则必须使用
try{}catch{}
语句。
5
、请简述
io
流的分类和功能
按照数据流向
输入流
读入数据
硬盘
-----
内存
inputStream
输出流
写出数据
内存
------
硬盘
outputStream
按照数据类型
字符流
字节流
6
、请简述递归是什么?注意事项是什么?
方法定义中调用方法本身
,
构造函数中不可以使用
7、
字节流和字符流的两个基类是什么?它们是谁是子类?
字节流的两个基类是
InputStream
和
OutputStream
,字符流的两个基类是
Reader
和
Writer
,它们都是
Object
类的直接子类,字节流是处理以
8
位字节为基本单位的字节流类;
Reader
和
Writer
类是专门处理
16
位字节的字符流类。
8、
程序运行时,会在内存中创建多个对象,然而程序结束后,这些对象便被当作垃圾
回收了。如果希望永久保存这些对象
如果希望永久保存这些对象,则可以将对象转为字节数据写入到硬盘上,这个过程称为对象序列化。
9、final finally
的区别?
Final
用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承
finally
是异常处理语句的一部分,表示总执行
10、
什么是
java
序列化,如何实现?
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行硫化,可以对流化后的对象进行读写操作,也可以将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题
序列化的实现:将需要被序列化的类实现
Serializable
接口
四、
编程题
(3*5)
1
、
从文本文件中读取数据(每一行为一个字符串数据)到集合中,并遍历集合
1、高效字符输入流和创建集合
2、操作文件(一次读取一行)添加到集合中
3、释放资源
public
static
void
test1()
throws
IOException {
/**
* 从文本文件中读取数据(每一行为一个字符串数据)到集合中,并遍历集合
* 1、高效字符输入流和创建集合
* 2、操作文件(一次读取一行)
* 添加到集合中
* 3、释放资源
*/
// 1、高效字符输入流和创建集合
List<String> nameList =
new
ArrayList<String>();
BufferedReader bufferedReader =
new
BufferedReader(
new
FileReader(
new
File(
"5.txt"
)));
/*
* 2、操作文件(一次读取一行) 添加到集合中
*/
String str;
while
((str = bufferedReader.readLine()) !=
null
) {
nameList.add(str);
}
// 3、释放资源
bufferedReader.close();
for
(String name : nameList) {
System.
out
.println(name);
}
}
2
、复制个视频文件
一次操作一个字节数组,并改一个名字
public
static
void
test2()
throws
Exception {
// 1、创建流
InputStream inputStream =
new
FileInputStream(
"D:\java_study\java基础课程\day06\avi\06.01_java测试题.avi"
);
OutputStream outputStream =
new
FileOutputStream(
"测试.avi"
);
// 2、操作文件 一次操作一个字节数组
byte
[] b =
new
byte
[1024];
int
len;
while
((len = inputStream.read(b)) != -1) {
outputStream.write(b, 0, len);
}
outputStream.close();
inputStream.close();
}
3
、
打印F
盘符
下和F
盘
下所有目录中.
txt
文件
public
static
void
img(File dir) {
File[] files = dir.listFiles();
String[] s = {
".jpg"
,
".png"
,
".apk"
};
if
(files ==
null
) {
System.
out
.println(
"亲!没有东西啊!"
);
return
;
}
for
(File file : files) {
if
(file.isFile()) {
for
(String string : s) {
if
(file.getName().endsWith(string)) {
System.
out
.println(file.getName());
}
}
}
else
{
img
(file);
}
}
}
最后
以上就是辛勤鞋子为你收集整理的Java基础 IO回顾 题目的全部内容,希望文章能够帮你解决Java基础 IO回顾 题目所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复