1. 以下关于对象序列化描述正确的是
-
A 使用FileOutputStream可以将对象进行传输
-
B 使用PrintWriter可以将对象进行传输
-
C 使用transient修饰的变量不会被序列化
-
D 对象序列化的所属类需要实现Serializable接口
参考答案:CD
考点:对象序列化
题解:
使用ObjectOutputStream和ObjectInputStream可以将对象进行传输.
声明为static和transient类型的成员数据不能被串行化。因为static代表类的状态, transient代表对象的临时数据。
2. 在Java线程状态转换时,下列转换不可能发生的有()?
-
A 初始态->运行态
-
B 就绪态->运行态
-
C 阻塞态->运行态
-
D 运行态->就绪态
参考答案:AC
考点:线程的生命周期
题解:
线程的生命周期中包括五种状态:初始态、就绪态、运行态、阻塞态、死亡状态。
其状态转换如下图所示:
3. 有一个源代码,只包含import java.util.* ; 这一个import语句,下面叙述正确的是? ( )
-
A 只能写在源代码的第一句
-
B 可以访问java/util目录下及其子目录下的所有类
-
C 能访问java/util目录下的所有类,不能访问java/util子目录下的所有类
-
D 编译错误
正确答案:C
考点:import 导包细节注意
题解:导入java.util.* 不能读取到其子目录的类,因为如果java.util 里面有个a类,java.util.regex 里面也有个a类,我们若是要调用a类的方法或属性时,应该使用哪个a类呢。所以也应该选C
4. 下面程序的输出是什么?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
-
A 342
-
B 3423
-
C 34234
-
D 323
参考答案:B
题解:
首先是foo(0),在try代码块中未抛出异常,finally是无论是否抛出异常必定执行的语句,
所以 output += “3”;然后是 output += “4”;
执行foo(1)的时候,try代码块抛出异常,进入catch代码块,output += “2”;
前面说过finally是必执行的,即使return也会执行output += “3”
由于catch代码块中有return语句,最后一个output += “4”不会执行。
所以结果是3423
5. 关于下面程序,哪些描述是正确的: ( )
1 2 3 4 5 6 7 8 9 |
|
-
A 行1有语法错误
-
B 行4有语法错误
-
C 行5有语法错误
-
D 行6有语法错误
-
E 行2有语法错误,loop是关键字
-
F 程序能够正常编译和运行
正确答案:B
考点:while() 中表达式的判断
题解:在C语言中,除0以外的int 值会被认为是true,而java中没有这个机制,必须是boolean 类型的。
6. 以下程序运行的结果为 ( )
public class Example extends Thread{
@Override
public void run(){
try {
Thread.sleep(1000);
} catch (InterruptedException e){
e.printStackTrace();
}
System. out .print( "run" );
}
public static void main(String[] args){
Example example= new Example();
example.run();
System. out .print( "main" );
}
}
-
A run main
-
B main run
-
C main
-
D run
-
E 不能确定
参考答案:A
考点:线程调用方法细节
题解:
本题中给出的example.run() 是对象对普通方法的调用,并没有启动线程,那么程序在运行过程中依然只有一条线程,当程序运行到Thread.sleep(1000);时,这条线程进入阻塞状态,sleep时间到,程序继续向下执行,打印"run" ,此时run()方法执行结束,程序继续向下运行,打印"main"。因此正确答案为A。