1. 什么是 Java 中的多态?
多态是 Java 中面向对象的核心特性之一,指的是同一操作作用于不同类型的对象时表现出不同的行为。通过方法重载和方法重写实现。方法重载是同一方法名,根据参数不同做不同处理,属于编译时多态;方法重写是子类重新定义父类的方法,属于运行时多态。多态使得代码更加灵活和可扩展。
2. 什么是接口和抽象类的区别?
接口和抽象类都用于定义规范,但有一些本质的区别。接口完全是方法的声明,不能包含具体的实现,且一个类可以实现多个接口;而抽象类可以包含已实现的方法,也可以包含抽象方法,并且一个类只能继承一个抽象类。接口适合定义公共行为,而抽象类适合提供默认实现和代码复用。
3. Java 中的集合框架是什么?
Java 的集合框架提供了一种标准方式来存储和操作数据。它包括几个核心接口,如 List
、Set
和 Map
,每个接口有不同的实现类。比如 ArrayList
和 HashSet
分别用于存储有序或无序的元素,而 HashMap
用于存储键值对。集合框架提供了丰富的操作方法,如添加、删除、查找等,极大地方便了数据结构的管理和操作。
4. Java 中的线程安全是什么?
线程安全指的是多个线程并发访问共享资源时,不会导致数据的不一致性。在 Java 中,通过同步机制(如 synchronized
关键字)来实现线程安全。此外,Java 提供了 java.util.concurrent
包中的各种工具类,如 ReentrantLock
和 ConcurrentHashMap
,它们能有效避免并发问题,提高程序的安全性和性能。
5. 什么是 Java 中的垃圾回收机制?
Java 的垃圾回收机制自动管理内存,回收不再使用的对象,从而防止内存泄漏。垃圾回收器通过标记-清除算法,标记可达对象并清除不可达对象。Java 使用分代收集策略,把堆内存分为年轻代和老年代。年轻代主要存放短生命周期的对象,老年代存放长生命周期的对象,这样有助于提高垃圾回收的效率。
6. Java 中的异常处理机制是什么?
Java 使用 try-catch-finally
语句来捕获和处理异常。try
块包含可能抛出异常的代码,catch
块用于处理异常,finally
块则用于无论是否发生异常都要执行的清理操作。异常分为检查型异常和非检查型异常,前者需要显式捕获或声明,后者则不强制要求处理。通过异常机制,Java 能够优雅地处理运行时错误,保证程序的健壮性。
7. Java 中的常量池是什么?
常量池是 Java 用来优化内存使用的一种机制,主要存储常量和不可变对象。比如,字符串常量池中保存了所有字面量字符串,避免了重复创建相同的字符串对象。常量池的使用使得内存更加高效,特别是在大量相同字符串的情况下,可以通过共享常量池中的对象来减少内存消耗。
8. Java 中的 final
关键字有什么作用?
final
关键字在 Java 中用于限制变量、方法和类的修改。修饰变量时,表示该变量是常量,赋值后不能更改;修饰方法时,表示该方法不能被子类重写;修饰类时,表示该类不能被继承。final
是 Java 中实现封装和防止意外修改的一种机制,有助于代码的安全性和稳定性。