Java面试重点:HashMap与Hashtable、StringBuffer对比及Java特性解析

0 下载量 51 浏览量 更新于2024-09-01 收藏 552KB PDF 举报
"这篇文章主要介绍了Java面试中常见的知识点,包括HashMap和Hashtable的区别、StringBuilder与StringBuffer的区别、Java垃圾回收机制、Java的三大特性——继承、多态和封装,以及super和this的用法,以及抽象类和接口的区别。" 1.HashMap 和 Hashtable 的区别 HashMap 和 Hashtable 是 Java 中两种常用的键值对映射数据结构。HashMap 是在 JDK 1.2 引入的,而 Hashtable 则是早期 Java 版本就存在的。尽管两者都可以存储键值对,但它们有明显的差异: - 线程安全性:Hashtable 是线程安全的,所有方法内部都进行了同步处理,这使得它在多线程环境下直接可用。而 HashMap 并非线程安全,如果需要在多线程中使用,推荐使用 ConcurrentHashMap,它提供了更高的并发性能。 - 效率:由于 Hashtable 的线程安全性,其执行效率相对较低。HashMap 在大多数情况下效率更高,但在多线程环境中,需要额外处理同步问题。 - 空值处理:Hashtable 不允许键或值为 null,而 HashMap 允许一个键为 null,但值可以有多个为 null。 - 继承关系:Hashtable 继承自 Dictionary 类(已废弃),HashMap 继承自 AbstractMap 类。 2.StringBuilder 和 StringBuffer 的区别 StringBuilder 和 StringBuffer 都用于字符串拼接,它们的主要区别在于线程安全性。StringBuilder 是非线程安全的,适合单线程环境中的字符串操作,效率较高。StringBuffer 是线程安全的,多线程环境下的字符串拼接可以使用 StringBuffer。 3.java 垃圾回收机制(GC) Java 的垃圾回收机制是一种自动内存管理机制,它负责识别不再使用的对象并释放其占用的内存空间。GC 有助于防止内存泄漏,但其工作原理和策略复杂,包括标记-清除、复制、标记-整理等算法,以及新生代、老年代、永久代的内存划分。 4. Java 的特性——继承/多态/封装 - 封装:封装是面向对象编程的基础,它将数据和行为捆绑在一起,通过访问控制(如 private、public、protected)来保护数据,减少代码间的耦合。 - 继承:继承允许一个类(子类)继承另一个类(父类)的属性和方法,实现代码复用,子类还可以覆盖或扩展父类的方法。 - 多态:多态是指同一种行为可以有不同的表现形式,具体取决于调用的对象。这在Java中通过方法重写和接口实现来体现。 5. super 和 this - super 关键字用于访问父类的成员,包括构造函数、字段和方法。 - this 关键字则用于引用当前对象,可以用来调用当前类的构造函数、字段和方法。 6. 抽象类和接口的区别 - 抽象类是一种不能实例化的类,它可以包含抽象方法(没有实现的方法)和具体方法。一个类可以继承多个抽象类。 - 接口是一个完全抽象的类型,只包含常量和抽象方法。Java 8以后,接口还可以包含默认方法和静态方法。一个类可以实现多个接口,实现多继承的效果。 这些知识点在Java面试中经常被问到,理解并掌握它们对于提升编程技能和顺利通过面试至关重要。