铁马冰河2000

导航

Java基础练习题-错题集(三)

(1)我们在程序中经常使用“System.out.println()”来输出信息,语句中的System是包名,out是类名,println是方法名。

选项:

A. 对

B. 错

 

(2)以下哪些继承自 Collection 接口()

选项:

A. List

B. Set

C. Map

D. Array

(3)下列哪些情况下会导致线程中断或停止运行()

选项:

A. 抛出InterruptedException异常

B. 线程调用了wait方法

C. 当前线程创建了一个新的线程

D. 高优先级线程进入就绪状态

(4)以下说法中正确的有?

选项:

A. StringBuilder是 线程不安全的

B. Java类可以同时用 abstract和final声明

C. HashMap中,使用 get(key)==null可以 判断这个Hasmap是否包含这个key

D. volatile关键字不保证对变量操作的原子性

 

=========================================解题思路=================================

(1)正确答案:B

System是java.lang中的类,out为System中的一个静态成员,out是java.io.PrintStream类的对象,而println()是java.io.PrintStream类的方法,所有可以调用类.静态方法.println()方法。

public final class System {
    public final static InputStream in = null;
    public final static PrintStream out = null;
}

(2)正确答案:A B

集合常考点:

 

(3)正确答案:AB

A 选项:Interrupt 确实会导致线程中断,备注点:若换一种说法 捕获到异常就代表线程不会中断和停止

B 选项:线程调用 wait()方法,释放了锁,会强制导致当前正在执行的线程中断,需要 notify()或 notifyall()来“唤醒“

C 选项:当线程创建一个新的线程时,CPU 时间片不会剥夺当前线程运行的“权利”

D 选项:当高优先级线程进入就绪状态,也需要等待当前线程的运行结束才可以继续运行,此时当前线程处于运行中 RUBBABLE 状态中的 READY 就绪态

(4)正确答案:AD

A选项:

首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String

String最慢的原因 String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。

String:适用于少量的字符串操作的情况; 

StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况;

StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的

B选项:abstract修饰的类是抽象类,是可以继承的,而final修饰的类表示不能再被继承,故肯定不能共同使用。故B错

C选项:HashMap中提供的get(key)获取的是变量,无法判断是否存在key。所以C是错的

 

 D选项:volatile关键字是一种轻量级的同步机制,只保证数据的可见性,而不保证数据的原子性。故D对

volatile关键字的作用可参考:https://blog.csdn.net/xinghui_liu/article/details/124379221

 

posted on 2022-08-24 22:39  铁马冰河2000  阅读(107)  评论(0编辑  收藏  举报