第7章 异常处理
一.单选题(共4题,50.0分)
1、对于catch子句的排列,下列哪种是正确的( )
A、 父类在先,子类在后
B、 子类在先,父类在后
C、 有继承关系的异常不能在同一个try程序段内
D、 先有子类,其他如何排列都无关
正确答案: B
2 、当方法遇到异常又不知如何处理时,下列哪种说法是正确的( )A、 捕获异常
B、 抛出异常
C、 声明异常
D、 嵌套异常
正确答案: C
3 、在异常处理中,如释放资源、关闭文件、关闭数据库等由( )来完成。A、 try子句
B、 catch子句
C、 finally子句
D、 throw子句
正确答案: C
4 、一个异常将终止( )A、 整个程序
B、 叧终止抛出异常的方法
C、 产生异常的try块
D、 上面的说法都不对
正确答案: A
二.判断题(共4题,50.0分)
1 、程序中抛出异常时(throw),只能抛出自己定义的异常对象。
正确答案:×
2 、一个异常处理中finally语句块只能有一个或者可以没有。正确答案:√
3 、异常类对象代表当前出现的一个具体异常。正确答案:√
4、 如果异常发生时,没有捕获异常的代码,程序会正常执行。正确答案:×
第8章 线程
一.单选题(共3题,37.5分)
1 、如下代码创建一个新线程并启动线程,问:四个选项中可以保证正确代码创建target对象,并能编译正确的是?
public static void main(String[] args) {
Runnable target=new MyRunnable( ); Thread myThread=new Thread(target);
}
A、 public class MyRunnable extends Runnable {
public void run( ) { }
}
B、 ublic class MyRunnable extends Runnable {
void run( ) { }
}
C、 public class MyRunnable implements Runnable {
public void run( ) { }
}
D、 public class MyRunnable implements Runnable {
void run( ) { }
}
正确答案: C
(Runnable为接口,D答案不能重写run方法。)
2 、当线程调用start( )后,其所处状态为( )?
A、 阻塞状态
B、 运行状态
C、 就绪状态
D、 新建状态
正确答案: C
3、用()方法可以改变线程的优先级。
A、 runB、 setPrority
C、 yield
D、 sleep
正确答案: B
二.多选题(共1题,12.5分)
1、以下选项中可以填写到横线处,让代码正确编译和运行的是? public class Test implements Runnable {
public static void main(String[] args) { ___________________________________ t.start(); System.out.println("main"); } public void run() { System.out.println("thread1!"); }
}
A、Thread t = new Thread(new Test());
B、 Test t = new Test();
C、 Thread t = new Test();
D、 Thread t = new Thread();
正确答案: AD
( A选项能有输出thread1! D选项没有输出 建立一个空内容的线程)
三.判断题(共4题,50.0分)
1、进程是线程Thread内部的一个执行单元,它是程序中一个单一顺序控制流程。
正确答案:×
2、线程的优先级是10,B线程的优先级是1,那么当进行调度时一定会先调用A。
正确答案:×
3、Thread类实现了Runnable接口。
正确答案:√
4、一个线程可以调用yield方法使其他线程有机会运行。
正确答案:√
第9章 IO流与文件操作
一.单选题
以下能够正确描述,C:/a/b,路径的输出是
String p1 = “C:/”; String p2 = “a”; String p3 = “b”;
A System.out.println(p1 + p2 + p3);
B System.out.println(Path.of(p1 + p2 + p3));
C System.out.println(Path.of(p1).resolve(p2).resolve(p3));
D System.out.println(Path.of(p3).resolve(p2).resolve(p1));
二.判断题(共10题,83.0分)
1 Java中的资源对象与创建的普通对象不同,不会在失去引用后自动销毁
错,需要手动关闭,所以衍生出可以自动关闭文件的子类
2 在try语句内创建的任何对象,在try块结束后直接销毁
错3 如果在try-with-resources语句的try代码块内引发异常,先执行catch块处理异常以及finally块后,关闭资源
错4 InputStream的read(byte[] b)方法,当流中字节数多于字节数组缓冲区容量时,将抛出异常
错
5 InputStream的read(byte[] b)方法,当流中没有字节时返回0
错,返回-1
6 OutputStream的write(byte[] b)方法,会将字节数组缓冲区中的全部字节写入输出流
对7 FileOutputStream是OutputStream接口的一个实现类
错,OutputStream是一个抽象类,FileOutputStream为其子类8 Java的Path是用以描述路径的抽象类
错
> 9 Path仅能用于描述路径,无法描述文件名称
错
10 Path不依赖于实际运行的操作系统,屏蔽了不同操作系统路径描述符的差异
对
三.简答题(共1题,8.7分)
1、编写一个方法,传入输入源文件路径,以及输出源文件路径。路径为包含了文件路径/名称/扩展名,的字符串描述可以是文本文件或任何类型文件。
方法实现:基于基本字节数组缓冲区的IO流操作,基于指定输入源/输出源复制文件;资源必须被正确关闭;异常在方法内处理;无需考虑目录不存在问题
(过滤代码格式后,粘贴提交)
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class test {
public static void main(String[] args) throws IOException {
String fileName = "C:/example/from.txt";
String toFile = "C:/example/to.txt";
copyByIO(fileName, toFile);
}
private static void copyByIO(String sourceFile, String targetFile) {
try (InputStream input = new FileInputStream(sourceFile);
OutputStream output = new FileOutputStream(targetFile);) {
int size = 4;
byte[] buffer = new byte[size];
int len;
while ((len = input.read(buffer)) != -1) {
output.write(buffer, 0, len);
}
System.out.println("复制成功");
} catch (IOException e) {
e.printStackTrace();
}
}
}