跳到主要内容

Java 基础知识体系概览

什么是 Java?

Java 是一门面向对象的、跨平台的、强类型编程语言,由 Sun Microsystems 于 1995 年发布(现归 Oracle 所有)。Java 的核心理念是 "Write Once, Run Anywhere"(WORA)——编写一次,到处运行。

这是如何实现的?Java 代码编译后不直接生成机器码,而是生成一种中间形式——字节码(Bytecode),然后运行在 JVM(Java 虚拟机) 之上。不同操作系统有不同的 JVM 实现,但字节码是通用的,所以同一份 Java 程序可以在 Windows、Linux、macOS 上运行。

为什么 Java 这么重要?

Java 连续 20+ 年位居编程语言排行榜前列,是企业级后端开发的首选语言之一:

领域说明
企业后端绝大多数银行、保险、电信系统用 Java 开发
互联网后端阿里、美团、京东、字节等大厂的核心服务用 Java/Spring
Android 开发Android 原生开发的主要语言(现与 Kotlin 并存)
大数据Hadoop、Spark、Flink 等大数据框架用 Java/Scala 编写
就业市场Java 岗位数量长期位居各语言前列

核心知识点

数据类型——Java 的"基本单元"

Java 是强类型语言——每个变量必须先声明类型才能使用。Java 有 8 种基本类型(Primitive Types)

类型大小范围默认值
byte1 字节-128 ~ 1270
short2 字节-32768 ~ 327670
int4 字节约 ±21 亿0
long8 字节约 ±922 京0L
float4 字节约 ±3.4e380.0f
double8 字节约 ±1.8e3080.0d
char2 字节Unicode 字符'\u0000'
boolean-true/falsefalse

基本类型都有对应的包装类intIntegerbooleanBoolean),Java 5 引入的自动装箱/拆箱(Autoboxing) 让两者可以自动转换。一个经典面试题:Integer.valueOf(127) == Integer.valueOf(127)true(缓存池),而 Integer.valueOf(128) == Integer.valueOf(128)false

面向对象——Java 的核心思想

Java 是纯面向对象语言(除基本类型外,一切皆对象)。面向对象三大特征:

  • 封装(Encapsulation):用 private/protected/public 控制访问权限,隐藏内部实现细节
  • 继承(Inheritance):子类继承父类的属性和方法,用 extends 关键字(Java 只支持单继承)
  • 多态(Polymorphism):父类引用指向子类对象,运行时调用子类的方法实现
面试高频

抽象类 vs 接口是 Java 面试的经典问题:抽象类用 abstract class,可以有构造方法和实例变量;接口用 interface,Java 8 后可以有 default 方法。一个类只能继承一个抽象类,但可以实现多个接口。

String——最特殊的"对象"

String 在 Java 中是不可变对象(Immutable)——一旦创建就不能修改。每次拼接字符串实际上都在创建新的 String 对象。String 有一个字符串常量池(String Pool)"abc""abc" 指向池中的同一个对象,所以 "abc" == "abc"true

频繁拼接字符串应使用 StringBuilder(线程不安全但快)或 StringBuffer(线程安全但慢)。

异常处理——程序的"安全网"

Java 用 try-catch-finally 处理异常。异常体系的根是 Throwable,分为两大类:

  • Error:严重错误(如 OutOfMemoryError),程序无法恢复
  • Exception:可处理的异常,又分为:
    • Checked Exception(受检异常):必须用 try-catchthrows 处理(如 IOException
    • Unchecked Exception(非受检异常):RuntimeException 及其子类(如 NullPointerException),不强制处理

Java 7 引入的 try-with-resources 可以自动关闭资源,不再需要在 finally 中手动关闭。

泛型——类型安全的"模板"

泛型(Generics) 让你写出类型安全且可复用的代码——List<String> 表示"只能放字符串的列表",如果误放了 Integer 编译器会报错。

Java 泛型通过类型擦除(Type Erasure) 实现——编译后泛型信息被擦除,List<String>List<Integer> 在字节码中都是 List。这是 Java 泛型的历史局限,面试中的 ? extends T(上界通配符)和 ? super T(下界通配符)以及 PECS 原则(Producer Extends, Consumer Super)是常考点。

反射——运行时的"透视眼"

反射(Reflection) 允许在运行时获取类的信息(字段、方法、构造器)并动态调用。Spring 框架的依赖注入(IoC)、MyBatis 的 Mapper 代理、JSON 序列化库等都大量依赖反射机制。

反射功能强大但有代价:性能开销、破坏封装性、绕过编译检查。


学习建议

推荐学习路径
  1. 数据类型与运算 → Java 语法基础
  2. 面向对象 → 三大特征 + Object 方法(equals/hashCode/toString)
  3. 异常处理 → try-catch-finally、自定义异常
  4. 泛型与注解 → 类型安全与元数据
  5. 反射与 IO → 框架底层原理
  6. Java 新特性 → Lambda、Stream、Record、虚拟线程

相关链接