Java 思维导图
中心主题:Java

Java 基础
-
1. 概述与环境搭建
- 什么是Java:一种高级、面向对象、跨平台的编程语言。
- 核心思想:
- 万物皆对象:将现实世界抽象为程序中的对象。
- 封装:隐藏对象的内部状态,只暴露必要的操作接口。
- 继承:子类可以继承父类的属性和方法,实现代码复用。
- 多态:同一操作作用于不同的对象,会产生不同的执行结果。
- JDK, JRE, JVM:
- JDK (Java Development Kit):Java开发工具包,包含JRE和开发工具(如编译器
javac)。 - JRE (Java Runtime Environment):Java运行环境,包含JVM和核心类库。
- JVM (Java Virtual Machine):Java虚拟机,是Java跨平台的核心,负责执行字节码。
- JDK (Java Development Kit):Java开发工具包,包含JRE和开发工具(如编译器
- 环境变量:配置
JAVA_HOME和PATH,使命令行能识别Java命令。 - 第一个程序:
Hello, World!,学习编译(javac)和运行(java)。
-
2. 语法基础
- 数据类型:
- 基本类型:
byte,short,int,long,float,double,char,boolean。 - 引用类型:类, 接口, 数组, 枚举。
- 基本类型:
- 变量与常量:声明、初始化、作用域。
- 运算符:算术、关系、逻辑、赋值、三目运算符。
- 流程控制:
- 条件语句:
if-else,switch。 - 循环语句:
for,while,do-while。 - 跳转语句:
break,continue,return。
- 条件语句:
- 数组:声明、创建、初始化、遍历(
for-each)。
- 数据类型:
-
3. 面向对象
- 类与对象:类是模板,对象是实例。
- 成员变量 vs 局部变量:位置、内存位置、生命周期。
- 方法:定义、重载、递归。
- 构造方法:创建对象时自动调用的特殊方法。
this关键字:指代当前对象实例。static关键字:- 静态变量:属于类,所有对象共享。
- 静态方法:属于类,通过类名调用。
- 静态代码块:在类加载时执行一次。
- 封装:使用
private修饰符隐藏数据,提供public的getter/setter方法。 - 继承:
extends关键字,子类继承父类,方法重写。 - 多态:
- 前提:继承、重写、父类引用指向子类对象。
- 体现:编译时多态(方法重载),运行时多态(方法重写)。
- 抽象类与接口:
- 抽象类:
abstract关键字,包含抽象方法和具体方法,不能实例化。 - 接口:
interface关键字,全是抽象方法和常量(Java 8后可含默认/静态方法),用于实现多继承。
- 抽象类:
- 内部类:
成员内部类、静态内部类、局部内部类、匿名内部类。
-
4. 常用API
- 字符串:
String:不可变,线程安全。StringBuilder:可变,非线程安全,单线程性能高。StringBuffer:可变,线程安全,多线程安全。
- 包装类:
Integer,Double等,实现基本类型与对象之间的转换(自动装箱/拆箱)。 - 日期时间:
- 旧版:
java.util.Date,java.util.Calendar。 - 新版(Java 8+):
java.time包下的LocalDate,LocalTime,LocalDateTime。
- 旧版:
- 集合框架:
Collection接口:List接口 (有序, 可重复):ArrayList(数组实现, 查快),LinkedList(链表实现, 增删快),Vector(线程安全)。Set接口 (无序, 不可重复):HashSet(哈希表实现),LinkedHashSet(插入有序),TreeSet(排序)。
Map接口 (键值对存储):HashMap(哈希表实现),LinkedHashMap(插入有序),TreeMap(排序),Hashtable(线程安全)。
- I/O流:
- 字节流:
InputStream,OutputStream。 - 字符流:
Reader,Writer。 - 缓冲流:
Buffered...,提高读写效率。 - NIO (New I/O):基于通道和缓冲区的非阻塞I/O模型。
- 字节流:
- 字符串:
Java 高级特性
-
1. 异常处理
- 体系结构:
Throwable->Error(严重JVM错误) /Exception(程序可处理) ->RuntimeException(运行时异常, 检查不到) /CheckedException(受检异常, 必须处理)。 - 关键字:
try,catch,finally,throw,throws。
- 体系结构:
-
2. 泛型
- 作用:在编译阶段进行类型检查,避免强制类型转换,提高代码安全性。
- 使用:类、方法、接口上使用
<>,如List<String>。 - 通配符:,
? extends T(上界),? super T(下界)。
-
3. 反射
- 概念:在运行时动态地获取类的信息(构造器、方法、字段)并操作对象。
- 核心类:
Class,Constructor,Method,Field。 - 应用:框架(如Spring)、动态代理、序列化。
-
4. 注解
- 概念:代码中的特殊标记,用于解释代码、编译检查或运行时处理。
- 内置注解:
@Override,@Deprecated,@SuppressWarnings。 - 元注解:注解的注解,如
@Target,@Retention。 - 自定义注解。
-
5. 多线程与并发
- 基础:
- 创建线程:继承
Thread类,实现Runnable接口。 - 线程生命周期:新建、就绪、运行、阻塞、死亡。
- 线程同步:
synchronized关键字。
- 创建线程:继承
- 高级并发:
java.util.concurrent包:- 线程池:
ExecutorService,ThreadPoolExecutor,管理线程资源。 - 锁:
ReentrantLock(比synchronized更灵活)。 - 原子类:
AtomicInteger等,保证原子性操作。 - 并发集合:
ConcurrentHashMap,CopyOnWriteArrayList等,线程安全的集合。
- 线程池:
volatile关键字:保证可见性,禁止指令重排序。ThreadLocal:为每个线程提供独立的变量副本。
- 基础:
Java 核心库与框架
-
1. 核心库
- 集合框架 (见1.4)
- I/O流 (见1.4)
- 网络编程:
- Socket:基于TCP的可靠通信。
- DatagramSocket:基于UDP的快速通信。
- 其他:正则表达式、国际化、工具类(
Math,Collections等)。
-
2. 主流框架
- Spring生态系统:
- Spring Framework:核心容器、AOP、事务管理。
- Spring Boot:简化Spring应用的初始搭建和开发,约定优于配置。
- Spring Cloud:用于构建微服务架构。
- Spring MVC:用于构建Web应用的MVC框架。
- 持久层框架:
- MyBatis:优秀的持久层框架,支持定制化SQL、存储过程以及高级映射。
- JPA (Java Persistence API):Java EE的标准ORM规范,Hibernate是其主流实现。
- 其他:
- Netty:高性能、异步事件驱动的网络应用框架。
- Log4j / Logback:日志框架。
- JUnit:单元测试框架。
- Spring生态系统:
Java 开发工具与生态
-
1. 开发工具
- IDE (集成开发环境):
- IntelliJ IDEA:目前最流行、功能最强大的Java IDE。
- Eclipse:经典的开源IDE。
- VS Code:轻量级,通过插件支持Java开发。
- 构建工具:
- Maven:依赖管理、项目构建、打包。
- Gradle:基于Groovy/Kotlin的DSL,比Maven更灵活,构建速度更快。
- 版本控制:
- Git:分布式版本控制系统,配合GitHub/GitLab使用。
- IDE (集成开发环境):
-
2. 应用领域
- 后端开发:企业级应用、网站后端服务(最核心的应用领域)。
- 大数据:Hadoop、Spark、Flink等大数据框架主要用Java/Scala编写。
- 安卓开发:虽然现在主推Kotlin,但Java仍是安卓开发的重要语言。
- 嵌入式系统:Java ME(已衰落)和一些物联网设备。
- 金融科技:因其稳定性和安全性,在银行、证券等领域被广泛使用。
Java 新特性与未来
- 1. 新版本特性 (以Java 8/11/17 LTS为例)
- Java 8 (里程碑版本):
- Lambda表达式:函数式编程。
- Stream API:对集合进行链式、并行操作。
- 新的日期时间API (
java.time)。 - 接口默认方法/静态方法。
- Java 11 (LTS):
var局部变量类型推断、HTTP Client API等。 - Java 17 (LTS):密封类、Pattern Matching for
switch等。
- Java 8 (里程碑版本):
- 2. 未来趋势
- 模块化系统 (JPMS - Java Platform Module System):更强大的封装性,解决“JAR地狱”问题。
- 更深入的函数式编程。
- 性能持续优化。
- 与云原生、Serverless的结合。
