2019年10月30日_java_4
考点1
下面的方法,当输入为2的时候返回值是多少?
1 | public static int getValue(int i) { |
- A 0
- B 2
- C 4
- D 10
正确答案: D
解析
没有break
,发生case
穿透现象,程序会继续向下执行,直到遇到break
或者结束switch
语句的大括号为止。
考点2
下面那些情况可以终止当前线程的运行?
- A 当一个优先级高的线程进入就绪状态时
- B 抛出一个异常时
- C 当该线程调用sleep()方法时
- D 当创建一个新线程时
正确答案: B
解析
- 当一个优先级高的线程进入就绪状态时,它只是有较高的概率能够抢到
CPU
的执行权,不是一定就能抢到执行权,所以A错 - 抛出一个例外时,该线程就终止了,所以B正确
- 当前线程调用
sleep()
方法或者wait()
方法时,只是暂时停止了该线程的运行,不是终止线程,注意题目说的是“终止”,就是完全停止,所以C错误 - 当创建一个新的线程时,该线程也加入到了抢占
CPU
执行权的队伍中,但是是否能抢到,并不清楚,和A的思想一样,所以D错误
线程结束的三个原因:
run
方法执行完成,线程正常结束- 线程抛出一个未捕获的
Exception
或者Error
- 直接调用该线程的
Stop
方法结束线程(不建议使用,容易导致死锁)
考点3
下列关于java
中的 wait()
方法和 sleep()
方法的区别描述错误的是?
- A
wait()
方法属于Object
类,sleep()
属于Thread
类 - B 调用
wait()
方法的时候,线程会放弃对象锁 - C 调用
sleep()
方法的过程中,线程不会释放对象锁 - D
sleep()
方法导致了程序暂停执行指定的时间,让出cpu
给其他线程
正确答案: D
解析
sleep和wait的区别有:
- 这两个方法来自不同的类分别是
Thread
和Object
- 最主要是**
sleep
方法没有释放锁,而wait
方法释放了锁**,使得敏感词线程可以使用同步控制块或者方法。 wait
,notify
和notifyAll
只能在同步控制方法或者同步控制块里面使用,而sleep
可以在任何地方使用1
2
3
4synchronized(x){
x.notify()
//或者wait()
}sleep
必须捕获异常,而wait
,notify
和notifyAll
不需要捕获异常
D是线程暂停执行指定时间而不是程序暂停执行指定的时间。
考点4
执行以下程序后的输出结果是()
1 | public class Test { |
- A A,A
- B A,B
- C B,B
- D AB,B
正确答案: D
解析
考点5
关于C++/JAVA
类中static
成员和对象成员的说法正确的是?
- A
static
成员变量在对象构造时生成 - B
static
成员函数在对象成员函数中无法调用 - C 虚成员函数不可能是
static
成员函数 - D
static
成员函数不能访问static
成员变量
正确答案: C
解析
C++
中虚函数类似java
语言中的抽象方法,抽象方法中不能用private
,static
, synchronized
,native
等修饰词修饰。
考点6
给出下面的代码段:
1 | public class Base{ |
在代码说明// assignment x=a, y=b处写入如下哪几个代码是正确的?()
- A
Base(a,b);
- B
x=a, y=b;
- C
x=a; y=b;
- D
this(a,b);
正确答案: CD
解析
考点7
下列哪些操作会使线程释放锁资源?
- A
sleep()
- B
wait()
- C
join()
- D
yield()
正确答案: BC
解析
考点8
往OuterClass类的代码段中插入内部类声明, 哪一个是错误的:
1 | public class OuterClass{ |
- A class InnerClass{public static float func(){return f;} }
- B abstract class InnerClass{ public abstract float func(){} }
- C static class InnerClass{ protected static float func(){return f;} }
- D public class InnerClass{ static float func(){return f;} }
正确答案: ABCD
解析
主要考核了这几个知识点:
1.静态内部类才可以声明静态方法,所以A错,D错
2.静态方法不可以使用非静态变量,所以C错误
3.抽象方法不可以有函数体,所以B错误