【Java基础】Java面试题目整理与解说(二)
1.Collection 和 Collections 的差别。
Collection
是集合类的上级接口,继承于他的接口主要有
Set 和
List.
Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
2.HashMap 和 Hashtable 的差别。
HashMap 是
Hashtable 的轻量级实现(非线程安全的实现),他们都完毕了
Map 接口,HashMap是非线程安全,效率上可能高于
Hashtable。在多个线程訪问 Hashtable 时,不须要自己为它的方法实现同步,而 HashMap 就必须为之提供外同步。
HashMap 同意将
null 作为一个
entry 的
key 或者
value,而
Hashtable 不同意。
HashMap 把 Hashtable 的 contains 方法去掉了,改成 containsvalue 和 containsKey。由于 contains 方法easy让人引起误解。Hashtable 继承自 Dictionary 类,而 HashMap 是 Java1.2 引进的 Map interface 的一个实现。
Hashtable 和
HashMap 採用的
hash/rehash 算法都大概一样,所以性能不会有非常大的差异。
3.sleep() 和 wait() 有什么差别?
sleep 是线程类(Thread)的方法,导致此线程暂停运行指定时间,给运行机会给其它线程,可是监控状态依旧保持,到时后会自己主动恢复。调用
sleep 不会释放对象锁。
wait 是
Object 类的方法,对此对象调用
wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,仅仅有针对此对象发出
notify 方法(或
notifyAll)后本线程才进入对象锁定池准备获得对象锁进入执行状态。
4.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1;
(s1+1
运算结果是 int
型,须要强制转换类型)short s1 = 1; s1 += 1;(能够正确编译)
5.Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12
Math.round(-11.5)==-11
round 方法返回与參数最接近的长整数,參数加
1/2 后求其
floor.