Java 基础面试题涵盖了语言的关键特性,包括访问修饰符、方法调用、对象比较、内存管理以及类库的使用。以下是对这些知识点的详细解释:
1. **main 方法的访问修饰符**:
- `main` 方法的声明必须为 `public`,因为Java虚拟机(JVM)在启动时通过命令行参数寻找可执行的 `main` 方法。如果声明为 `private`,JVM将无法直接访问,导致运行时错误。
2. **参数传递**:
- 在Java中,方法参数传递总是按值传递。对于基本类型,传递的是值的副本;对于对象,传递的是对象引用的副本,即地址。这意味着修改对象内部的状态是可行的,但不能改变引用本身。
3. **重写 `equals` 方法**:
- 默认情况下,`equals` 方法来自 `Object` 类,比较的是对象的内存地址。当需要比较对象内容时,通常需要重写 `equals`。例如,`String` 类已经重写了 `equals`,以比较字符串内容。
4. **`==` 与 `equals` 的区别**:
- `==` 比较的是两个对象是否指向内存中的同一位置,即是否是同一个对象实例。
- `equals` 方法比较的是对象的内容,对于非原始类型,通常用于比较对象属性的等价性。默认行为与 `==` 相同,但可以通过重写来改变。
5. **`static` 关键字**:
- 当 `main` 方法缺少 `static` 修饰符时,JVM需要创建类的实例才能调用它,这会导致运行时错误,因为JVM不创建对象直接调用方法。
6. **Oracle Type 4 驱动**:
- Type 4 JDBC 驱动是一个纯Java实现,不依赖于本地库,可以直接在Java应用服务器上运行,因此被称为“瘦驱动”。
7. **`finalize` 方法**:
- `finalize` 是一个特殊的方法,用于在对象被垃圾收集器回收之前执行清理工作。不过,依赖 `finalize` 进行资源清理是不推荐的,因为其执行时间不确定,且可能导致性能问题。
8. **Java API**:
- Java API(应用程序编程接口)是Java开发工具包(JDK)的一部分,包含了大量的预定义类和接口,提供各种功能,如输入输出、网络通信、图形用户界面等。
9. **`GregorianCalendar` 类**:
- `GregorianCalendar` 是Java中表示公历日期和时间的类,它是 `Calendar` 类的一个具体实现,支持西方的日历规则和日期计算。
掌握这些基础知识对于Java开发者至关重要,它们构成了编写高效、可靠代码的基础。在面试中,深入理解这些概念可以展示你的专业技能和对Java语言的全面了解。