天梯180329


1. 有以下类定义:

abstract class Animal {

abstract void say () ;

}

public class Cat extends Animal {

public Cat() {

System.out.printf(“I am a cat”);

}

public static void main(String[] args) {

Cat cat =new Cat();

}

}

运行后:

A. I am a cat

B. Animal 能编译,Cat不能编译

C. Animal不能编译,Cat能编译

D. 编译能通过,但是没有输出结果

 

2. 以下()不是Object类的方法

A. clone()

B. finalize()

C. toString()

D. hasNext()

 

3. 以下不是修饰符final的作用是()

A. 修饰常量

B. 修饰不可继承类

C. 修饰不可变类

D. 修饰不可覆盖的方法

 

4. (不定项)Java 8中,忽略内部接口的情况,不能用来修饰interface里的方法的有()

A. private

B. public

C. protected

D. static

 

5. (不定项)下面哪些是线程安全的?

A. Hashtable

B. Vector

C. TreeSet

D. LinkedList

 

//-------------------分割线-----------------------

B

D

C

AC

AB

 

答案详解:

1. Cat没有实现抽象方法,但是Animal能编译生成class文件。

2. clone():实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。

hashCode():该方法用于哈希查找,一般 obj1.equals(obj2)可以推出obj1.hashCode()==obj2.hashCode()

3. 不可变类(Immutable Class)是一旦被实例化就不会改变自身状态(或值)的类。

String就是一种典型的不可变类。不可变类的主要用途是在多线程环境 下确保对象的线程安全。不可变类一般建议使用final来修饰(比如String就是final类),否则子类可以通过继承不可变类的方式,增加setter方法,从而改变对象的状态,破坏不可变约束。但本题ABD更加常见和直接。

4. Java1.8 开始支持接口中定义静态方法。

 

5. 线程安全概念:

如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行你的这段代码。如果每次运行的结果和单线程运行结果一致,就是线程安全的。

线程安全问题都是由 全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般线程安全;若有多个线程同时执行读写操作,就要考虑线程同步。

VectorStack都是同步的,线程安全。Hashtable方法也同步(synchronized)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值