Java 与 C 核心差异对照

2026.09.27

先看这张表,能省一半复习时间:凡是「一样的」快速跳过,凡是「不一样的」重点记。

维度 Java C 备注
运行方式 javac 编译字节码,JVM 解释执行 gcc 直接编译成机器码 C 无虚拟机,性能更贴近硬件
内存管理 垃圾回收器自动回收 手动 malloc / free C 忘记 free = 内存泄漏
字符串 String 对象,不可变,有 length() char[],必须以 '\0' 结尾 见 11-字符串
数组 有 .length,越界抛异常 无长度信息,越界不报错 见 08-数组
参数传递 基本类型传值,对象传引用 一律值传递 要改外部变量必须传指针
指针 无(只有对象引用) 核心机制 * & -> 见 09-指针
函数重载 支持 不支持 函数名同作用域唯一
面向对象 class + 方法 + 继承 只有 struct(纯数据) 见 12-结构体
布尔类型 boolean 传统用 int,C99 才有 <stdbool.h> 0 假,非 0 真
引入代码 import 包 #include 文本包含 是「粘贴」不是「引用」
预处理 无 #define 宏,纯文本替换 无类型检查
异常处理 try / catch / finally 没有异常,靠返回值 + errno 见 17-类型转换与错误处理
类型系统 强类型、自动装箱 弱一些,隐式转换多 见 03-数据类型与变量
内存泄漏 GC 兜底 完全靠自己 见 19-内存管理

一句话总结

Java 给你一张安全网(GC、异常、边界检查);C 把安全网全撤了,换来性能与对内存的绝对控制。学 C 本质就是学「如何自己管好内存」。