JavaSE-易错题集-004

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

public class TestDemo

{

    public static String output = "";

    public static void foo(inti)

    {

        try

        {

            if (i == 1)

            {

                throw new Exception();

            }

        }

        catch (Exception e)

        {

            output += "2";

            return ;

        } finally

        {

            output += "3";

        }

        output += "4";

    }

    public static void main(String[] args)

    {

        foo(0);

        foo(1);

        System.out.println(output);

    }

}

  • 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

 public class While {

    public void loop() {

        int x= 10;

        while ( x )  {

            System.out.print("x minus one is " + (x - 1));

            x -= 1;

        }

    }

}

  • 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。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值