Java基础 IO回顾 题目
来源:互联网 发布:自学游戏制作 知乎 编辑:程序博客网 时间:2024/05/16 17:55
集合+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;
}
publicvoid setName(T name) {
this.name = name;
}
publicstaticvoid 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 Dogextends Animal {
}
class Catextends Animal {
}
class GenericDemo {
publicstaticvoid 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()两个法
publicclass Demo {
publicstaticvoid 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 {
publicstaticvoid main(String[] args)throws IOException {
write();
read();
}
publicstaticvoid write()throws IOException {
FileWriter fw =new FileWriter("d:\\fw.txt");
fw.write("hello");
}
publicstaticvoid 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 {
publicstaticvoid main(String[] args)throws IOException {
write();
read();
}
publicstaticvoid write()throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\bw.txt",true));
bw.write("hello");
bw.newLine();
bw.flush();
bw.close();
}
publicstaticvoid 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、释放资源
publicstaticvoid 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、复制个视频文件一次操作一个字节数组,并改一个名字
publicstaticvoid 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 =newbyte[1024];
int len;
while ((len = inputStream.read(b)) != -1) {
outputStream.write(b, 0, len);
}
outputStream.close();
inputStream.close();
}
3、打印F盘符下和F盘下所有目录中.txt文件
publicstaticvoid 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);
}
}
}
阅读全文
0 0
- Java基础 IO回顾 题目
- java基础-IO流回顾
- 黑马程序员 java基础回顾---IO流
- java基础回顾笔记-io流1
- java基础回顾笔记-io流2
- java基础回顾之-IO流
- Java基础回顾---IO(字节流)
- 回顾 Java IO
- Java IO回顾
- java IO回顾小结
- [转]java.io总结回顾
- Java基础知识回顾--IO流
- Java Io流回顾总结
- 关于Java基础回顾
- Java基础回顾(一)
- Java基础回顾(二)
- Java基础回顾(三)
- Java基础回顾(四)
- 当程序员没了互联网,该如何继续学习写代码?
- 【17-Redis延迟监控框架】
- Java基础 JDBC操作数据库
- SSH框架面试题集锦
- 《数字技术》连载20: 第2章 数字器件 第15节 电-非电 转换用的数字器件
- Java基础 IO回顾 题目
- JavaScript
- Java基础 反射
- linux ELF文件格式分析
- JavaScript基础(2.变量与数据类型)
- ubuntu 16.04 开机添加磁盘挂载
- Wildcard Matching:通配符匹配
- pycharm启动后总是不停的updating indices...indexing
- Sqli-labs6-10 盲注、基于时间,基于报错(附脚本)