面试考察点
- 是否能把 Java 的定位说清楚:一门面向对象、跨平台的通用编程语言,同时也是以 JVM 为核心的整套技术生态。
- 是否理解「一次编写,到处运行」背后靠的是什么机制(字节码 + JVM),而不是只会背口号。
- 是否能系统罗列 Java 的核心特点,并区分语言层面的特点(面向对象、强类型)和运行时层面的特点(GC、跨平台、多线程)。
核心结论
Java 是一门面向对象、跨平台、强类型的通用编程语言,它通过「字节码 + JVM」实现平台无关性,并依靠自动内存管理、丰富的类库和成熟生态成为企业级后端开发的主流选择。
Java 的三层定位可以这样区分:

| 层面 | 含义 | 关键词 |
|---|---|---|
| 语言层面 | 一门面向对象的强类型语言 | 封装、继承、多态、静态类型 |
| 运行时层面 | 运行在 JVM 之上,可跨平台 | 字节码、JVM、JRE |
| 生态层面 | 一套完整的技术体系 | JDK、类库、框架、中间件 |
核心特点可以概括为:
- 面向对象:以类和对象为基本单位,支持封装、继承、多态。
- 跨平台:源码编译成字节码,由各平台 JVM 解释执行,实现平台无关。
- 自动内存管理:通过垃圾回收器自动回收对象,减少内存泄漏风险。
- 强类型与静态检查:编译期就能发现大量类型错误。
- 多线程内置:语言层面提供 Thread、并发包,天然支持并发编程。
- 生态成熟:海量类库和框架(Spring、MyBatis 等),企业级开发支撑强。
原理拆解
一、从源码到运行的完整链路
Java 程序并不是直接编译成机器码,而是先编译成 JVM 能识别的字节码(.class),再由 JVM 根据所在平台转换成对应的机器指令。这就是跨平台的关键。

同一份 .class 文件,在不同平台的 JVM 上都能运行,JVM 屏蔽了操作系统和硬件的差异。
二、JDK、JRE、JVM 的关系
这三个概念经常被混问,需要分清楚:

- JVM:Java 虚拟机,负责加载字节码并执行,是跨平台的核心。
- JRE:JVM + 核心类库,是运行 Java 程序的最小环境。
- JDK:JRE + 编译器、调试器等开发工具,是开发者使用的最完整集合。
一句话记忆:JDK 包含 JRE,JRE 包含 JVM。
三、面向对象是语言设计的骨架
Java 把「一切皆对象」作为基本设计,类是最小封装单位。下面这段代码就体现了封装和多态:
public class Animal {
private String name; // 封装: 字段私有
public Animal(String name) {
this.name = name;
}
public void speak() { // 可被重写
System.out.println(name + " makes a sound");
}
}
public class Dog extends Animal { // 继承
public Dog(String name) {
super(name);
}
@Override
public void speak() { // 多态: 运行期绑定
System.out.println("Wang!");
}
}
面向对象带来的好处是:代码复用性强、职责边界清晰、易于扩展和维护,这也是 Java 适合大型企业系统的原因之一。
四、自动内存管理让开发者省心
Java 把内存分为堆、栈、方法区等区域,对象分配在堆上,由垃圾回收器(GC)自动判断哪些对象不再被引用并回收。开发者无需像 C/C++ 那样手动 free,降低了内存泄漏和悬空指针的风险。

代价是 GC 存在停顿,所以 JVM 提供了多种收集器(G1、ZGC 等)来在吞吐量和延迟之间做权衡。
五、强类型与平台无关相辅相成
Java 是静态强类型语言,变量必须先声明类型,编译器在编译期就做类型检查。这让大型项目在重构时更安全,配合字节码的稳定格式,使得「跨平台 + 可长期维护」两个目标可以同时成立。
Java 的基本数据类型(byte、short、int、long、float、double、char、boolean)与引用类型分开设计,前者直接存值,后者存对象引用,这一设计也影响了自动装箱、内存布局等大量后续话题。
面试高频追问
- Java 为什么能跨平台? 因为源码先被编译成与平台无关的字节码,再由各平台的 JVM 解释或即时编译成机器码执行,JVM 屏蔽了底层差异。
- Java 是编译型还是解释型语言? 两者都算:先编译成字节码(编译),再由 JVM 解释执行,热点代码通过 JIT 编译成机器码(即时编译)。
- Java 和 C++ 的主要区别? Java 没有指针、自动内存管理、单继承加接口多继承,跨平台能力更强;C++ 更贴近底层、性能可控性更高。
- JDK、JRE、JVM 有什么区别? JVM 是执行字节码的虚拟机,JRE 是 JVM 加核心类库,JDK 是 JRE 加开发工具,三者是包含关系。
- Java 是值传递还是引用传递? Java 只有值传递,传递对象时传的是引用的副本,所以方法内改字段有效、改引用本身无效。
面试变体
- 谈谈 Java 和 Kotlin、Go 的区别,各自适合什么场景?
- Java 从 JDK 8 到 JDK 21 有哪些重要演进(Lambda、模块化、虚拟线程)?
- 为什么大厂后端偏爱 Java 而不是其他语言?
- Java 的字节码和 JVM 字节码指令集你了解多少?
- 如果没有 JVM,Java 还能跨平台吗?
速记口诀
面向对象靠类封,跨平台赖字节码;GC 自动管内存,JDK 全家一套抓。
总结
Java 的本质可以用一句话概括:一门运行在 JVM 上、面向对象、自动管理内存的跨平台通用语言。它的核心特点——面向对象、跨平台、强类型、自动 GC、多线程、生态成熟——每一条都能延伸到 JVM、并发、集合等更深的面试主线。
回答「什么是 Java」时,不要只背特点清单,按「语言定位 + 运行机制 + 核心特点」三层来讲,再落到字节码和 JVM 上,就能把这个问题讲得又准又有深度。