Java面试题集锦
1. String、StringBuffer和StringBuilder的区别。 (1) String:存储数值不可改变的字符串 (2) StringBuffer:可变字符序列、线程安全、效率低 (3) StringBuilder:可变字符序列、线程不安全、效率高 2. final, finally, finalize的区别。 (1) final修饰的类不能被继承,修饰的方法不能被子类重写,修饰的属性为常量。一旦初始化后,不可再被赋值。习惯上,常量 用大写字符表示。 (2) finally是异常处理语句结构的一部分,表示总是执行。 (3) finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其 他资源回收,例如关闭文件等。 3. HashMap和Hashtable的区别。(都完成了Map接口) (1) HashMap是Hashtable的轻量级实现(非线程安全的实现),效率较高,而Hashtable是线程安全的,效率较低。 (2) Hashtable不允许使用 null 作为 key 和 value,而HashMap 可以。 (3) Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而 HashMap 就必须为之提供外同步。