在Java面试中,基础概念是考察的核心内容,掌握这些知识点不仅能提升你的技术深度,还能让你在面试中自信从容。本文将系统梳理Java中的关键基础概念,帮助你高效备考,轻松应对面试挑战。
1. Java的三大特性:封装、继承、多态
封装是面向对象编程的基石,通过`private`关键字隐藏类的内部实现细节,仅暴露公共的`public`方法供外部调用。例如,定义一个`Person`类时,将`name`和`age`设为`private`,并通过`getName()`和`setName()`方法访问,这样既能保护数据,又便于后续修改(如添加输入验证)。
继承通过`extends`关键字实现,允许子类复用父类的属性和方法。例如,`Student`类继承自`Person`类,既能使用`Person`的`getName()`方法,又能添加自己的`study()`方法。注意,Java不支持多继承(一个类只能有一个父类),但可通过接口实现类似效果。
多态体现在父类引用指向子类对象时,调用方法会根据实际对象类型动态决定。例如,`Person p = new Student(); p.getName();`会调用`Student`类的`getName()`方法(如果重写过),而非`Person`类的版本。这提高了代码的灵活性和可扩展性。
2. 面向对象与面向过程的区别
面向过程关注“如何实现”,将问题分解为一系列函数和步骤。例如,编写一个计算器程序时,会定义`add()`, `subtract()`等函数,按顺序调用。
面向对象则关注“谁来实现”,将问题抽象为对象及其交互。同一个计算器例子中,会定义`Calculator`类,包含`add()`、`subtract()`等方法,通过创建`Calculator`对象来调用。这种方式更符合现实世界的逻辑,代码更易维护和复用。
3. JVM、JRE、JDK的区别
- JDK(Java Development Kit):Java开发工具包,包含JRE和开发工具(如`javac`编译器、`java`运行工具)。开发Java程序必须安装JDK。
- JRE(Java Runtime Environment):Java运行环境,包含JVM和核心类库,用于运行已编译的Java程序。普通用户安装JRE即可。
- JVM(Java Virtual Machine):Java虚拟机,是JRE的核心,负责将Java字节码(`.class`文件)解释为机器码并执行。JVM实现了“一次编写,到处运行”的特性。
简言之,JDK = JRE + 开发工具,JRE = JVM + 核心类库。
4. Java的内存区域划分
Java程序运行时,内存分为以下几部分:
- 方法区(Method Area):存储类信息、常量、静态变量等,被所有线程共享。
- 堆(Heap):存放对象实例和数组,是垃圾回收(GC)的主要区域。
- 栈(Stack):每个线程私有,存储局部变量、方法调用等。
- 本地方法栈(Native Method Stack):为本地方法(如C/C++代码)服务。
- 程序计数器(Program Counter Register):记录当前线程执行的字节码指令地址。
理解这些区域有助于分析内存溢出(如堆溢出、方法区溢出)等问题。
5. String、StringBuilder、StringBuffer的区别
- String:不可变类,每次修改都会创建新对象,适合少量字符串操作。
- StringBuilder:可变类,线程不安全,但性能高,适合单线程环境下的大量字符串拼接。
- StringBuffer:可变类,线程安全(方法加了`synchronized`),但性能略低,适合多线程环境。
例如,循环拼接字符串时,用`StringBuilder`比`String`高效得多。
6. 常见的异常类型
- 编译时异常(Checked Exception):如`IOException`,必须在代码中显式处理(try-catch或throws)。
- 运行时异常(Unchecked Exception):如`NullPointerException`,由程序逻辑错误引起,可选处理。
- 错误(Error):如`OutOfMemoryError`,通常由系统资源耗尽引起,不可恢复。
掌握这些异常的分类和处理方式,能让你在面试中展示对异常管理的深刻理解。
通过系统梳理这些基础概念,你不仅能应对面试中的“概念题”,还能在实际开发中写出更健壮的代码。记住,扎实的基础是技术成长的基石,持续学习和实践才能让你在职场中游刃有余。