Java小题精炼训练营(篇四)

在当前类或者它的父类中

在当前类,或者它所有的父类中

在当前类中

D

2、关于String、StringBuffer、StringBuilder以下说法错误的是

StringBuilder运行速度最快

StringBuffer是线程安全的

String的值是可变的

StringBuffer运行速度比String快

String是final修饰的,不可变

运行速度StringBuilder>StringBuffer>String

StringBuffer是线程安全的

C

3、装箱、拆箱操作发生在: ()

类与对象之间

对象与对象之间

引用类型与值类型之间

引用类型与引用类型之间

通俗的讲,就是基本数据类型和包装类之间的转换。如: int  类型和  Integer  类的转换

基本数据类型转化成包装类是装箱  (如: int  -->  Integer)。

包装类转化成基本数据类型就是拆箱  (如:Integer  -->  int)。

包装类就是引用类型,基本数据类型就是值类型。

所以选C

4、程序文件名必须与公共外部类的名称完全一致(包括大小写)

正确

错误

公共外部类必须与源文件名一致,且一个源文件只能有一个公共外部类。

一个java文件里可以有多个class,但是只能有一个public class外部类,并且类名必须和.java文件名相同

A

5、A 是抽象父类或接口, B , C 派生自 A ,或实现 A ,现在 Java 源代码中有如下声明:

1. A  a0=new  A();

2. A  a1 =new  B();

3. A  a2=new  C();

问以下哪个说法是正确的?( )

第1行不能通过编译

第1、2行能通过编译,但第3行编译出错

第1、2、3行能通过编译,但第2、3行运行时出错

第1行、第2行和第3行的声明都是正确的

抽象类和接口不能实例化

A

6、在jdk 1.7中,以下说法正确的是(    )。

Java中所有的非抽象方法都必须在类内定义

Java中主方法可以不在类内定义,其他方法都必须定义在类内

Java中主方法必须定义在类内,其他方法可以不必定义在类内

Java中所有方法都不必在类内定义

1.8接口可以定义default方法和static方法;1.9接口中可以定义私有方法。

因此在JDK1.7中,接口只能定义抽象方法,既Java中所有的非抽象方法都必须在类内定义。

A

7、volatile关键字的说法错误的是

能保证线程安全

volatile关键字用在多线程同步中,可保证读取的可见性

JVM保证从主内存加载到线程工作内存的值是最新的

volatile能禁止进行指令重排序

出于运行速率的考虑,java编译器会把经常经常访问的变量放到缓存(严格讲应该是工作内存)中,读取变量则从缓存中读。但是在多线程编程中,内存中的值和缓存中的值可能会出现不一致。volatile用于限定变量只能从内存中读取,保证对所有线程而言,值都是一致的。但是volatile不能保证原子性,也就不能保证线程安全。

  • 禁止了指令重排
  • 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量值,这个新值对其他线程是立即可见的
  • 不保证原子性(线程不安全)

A

8、有一个源代码,只包含import java.util.* ; 这一个import语句,下面叙述正确的是?   ( )

只能写在源代码的第一句

可以访问java/util目录下及其子目录下的所有类

能访问java/util目录下的所有类,不能访问java/util子目录下的所有类

编译错误

java.util.*,只能读取其目录下的类,不能读取其子目录下的类。

因为其根目录和子目录下可能有同名类,若都能读取,则会混淆。

C

9、java8中,下面哪个类用到了解决哈希冲突的开放定址法

LinkedHashSet

HashMap

ThreadLocal

TreeMap

threadlocalmap使用开放定址法解哈希冲突,hashmap使用链地址法解决hash冲突

C

10、java中Hashtable, Vector, TreeSet, LinkedList哪些线程是安全的?

Hashtable

Vector

TreeSet

LinkedList

线程安全概念:

如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。线程安全问题都是由全局变量及静态变量引起的。

若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全。

LinkedList 和 ArrayList 都是不同步的,线程不安全;

Vector 和 Stack 都是同步的,线程安全;

Set是线程不安全的;

Hashtable的方法是同步的,线程安全;

HashMap的方法不是同步的,线程不安全;

AB

11、关于java集合下列说法不正确的有哪些()

HashSet 它是线程安全的,不允许存储相同的对象

ConcurrentHashMap 它是线程安全的,其中存储的键对象可以重复,值对象不能重复

Collection接口是List接口和Set接口的父接口,通常情况下不被直接使用

ArrayList线程安全的,允许存放重复对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值