Java知识体系
Java 知识体系
一、Java 语言基础
这是所有 Java 程序的基石。
- 基础语法
- 数据类型:
- 基本数据类型:
byte,short,int,long,float,double,char,boolean - 引用数据类型:类、接口、数组、枚举等
- 基本数据类型:
- 变量与常量:
final关键字 - 运算符:算术、关系、逻辑、位、赋值、条件(三元)、instanceof 等
- 流程控制:
if-else,switch-case,for,while,do-while,break,continue,return
- 数据类型:
- 面向对象编程 (OOP)
- 四大特性:
- 封装:通过访问控制符(
private,protected,public, 默认)隐藏实现细节,提供公共方法访问。 - 继承:
extends关键字,实现代码复用。单继承,但可多层继承。 - 多态:
- 编译时多态:方法重载(Overload)
- 运行时多态:方法重写(Override),基于继承和接口实现,通过父类/接口引用指向子类对象。
- 抽象:
abstract类和接口(interface)用于定义规范。
- 封装:通过访问控制符(
- 类与对象:类的定义、对象的创建(
new)、构造方法、this关键字。 - 方法:方法的定义、参数传递(值传递)、递归。
- 四大特性:
- 关键字和核心概念
static: 静态变量、静态方法、静态代码块。final: 修饰变量(常量)、方法(不可重写)、类(不可继承)。this和super: 访问当前对象和父类对象。package和import: 包机制,用于管理类和解决命名冲突。
二、异常处理
Java 提供了强大的异常处理机制来增强程序的健壮性。
- 异常体系结构:
Throwable->Error(系统错误,不可处理) 和Exception(异常,可处理)。Exception->RuntimeException(运行时异常/非受检异常) 和 非运行时异常 (受检异常,Checked Exception)。
- 处理机制:
try-catch-finally: 捕获并处理异常。throws: 声明方法可能抛出的异常,交给调用者处理。throw: 主动抛出一个异常对象。
- 自定义异常:继承
Exception或RuntimeException来创建自定义异常类。
三、集合框架 (Java Collections Framework)
用于存储和操作数据组,是 Java 中最重要和常用的库之一。
- 核心接口:
Collection: 所有集合类的根接口。List: 有序、可重复。 ->ArrayList,LinkedList,VectorSet: 无序、不可重复。 ->HashSet,LinkedHashSet,TreeSet
Map: 键值对存储。 ->HashMap,LinkedHashMap,TreeMap,Hashtable
- 实现类比较:
ArrayListvsLinkedList: 数组实现 vs 链表实现,随机访问快 vs 增删快。HashSetvsTreeSet: 哈希表实现(无序) vs 红黑树实现(有序)。HashMapvsHashtable: 线程不安全 vs 线程安全;允许nullkey/value vs 不允许。HashMapvsConcurrentHashMap: 非线程安全 vs 分段锁/ CAS 实现的线程安全。
- 工具类:
Collections: 提供排序、查找、同步化等静态方法。Arrays: 用于操作数组的工具类。
四、泛型 (Generics)
提供编译时类型安全检查,并消除强制类型转换。
- 泛型类/接口/方法:
class Box<T> {...},public <T> T getData(T data) {...} - 类型通配符:
?(无界),? extends T(上界),? super T(下界)。用于增加 API 的灵活性,遵循 PECS (Producer-Extends, Consumer-Super) 原则。
五、输入输出 (I/O)
Java I/O 系统提供了读写数据的多种方式。
- **流 (Stream)**:
- 字节流:
InputStream/OutputStream(处理所有类型数据,如图片、视频)。- 常用实现:
FileInputStream,FileOutputStream,BufferedInputStream,BufferedOutputStream
- 常用实现:
- 字符流:
Reader/Writer(专门处理文本数据,解决编码问题)。- 常用实现:
FileReader,FileWriter,BufferedReader,BufferedWriter,InputStreamReader(桥梁,将字节流转换为字符流)
- 常用实现:
- 字节流:
- **NIO (New I/O)**:
- 核心概念:
Channel,Buffer,Selector。 - 提供了非阻塞、高性能的 I/O 操作方式。
- 核心概念:
六、多线程 (Concurrency)
Java 内置了对多线程编程的支持。
- 线程创建:
- 继承
Thread类。 - 实现
Runnable接口(更推荐,因为可以避免单继承的限制)。 - 实现
Callable接口(可以返回结果和抛出异常)。
- 继承
- 线程生命周期:新建 (New)、就绪 (Runnable)、运行 (Running)、阻塞 (Blocked)、等待 (Waiting)、超时等待 (Timed Waiting)、终止 (Terminated)。
- 线程同步:
- synchronized 关键字:同步方法、同步代码块。
- Lock 接口:
ReentrantLock等,提供了比synchronized更灵活的锁操作。
- 线程通信:
wait(),notify(),notifyAll()(必须在同步代码块中使用)。
- 线程池:
ExecutorService框架:通过Executors工厂类创建 (newFixedThreadPool,newCachedThreadPool等)。- 核心参数:核心线程数、最大线程数、存活时间、工作队列、拒绝策略。
- 优势:降低资源消耗、提高响应速度、便于线程管理。
- **并发工具类 (java.util.concurrent)**:
AtomicInteger等原子类:保证操作的原子性。CountDownLatch,CyclicBarrier,Semaphore: 常用的同步辅助类。ConcurrentHashMap,CopyOnWriteArrayList: 线程安全的集合。
七、Java 8+ 新特性 (非常重要)
现代 Java 开发的必备知识。
- Lambda 表达式:
(parameters) -> expression或(parameters) -> { statements; },用于简化匿名内部类的书写。 - 函数式接口:只包含一个抽象方法的接口,如
Runnable,Callable,以及新引入的Supplier<T>,Consumer<T>,Function<T,R>,Predicate<T>。用@FunctionalInterface注解标识。 - Stream API:
- 用于对集合进行函数式、声明式的处理(过滤、映射、排序、归约等)。
- 操作分为中间操作 (
filter,map,sorted,distinct) 和终端操作 (forEach,collect,count,reduce)。
- Optional 类:用于避免
NullPointerException的容器类。 - 新的日期时间 API (
java.time包):LocalDate,LocalTime,LocalDateTime,ZonedDateTime,DateTimeFormatter等,解决了旧Date和Calendar类的所有缺陷。 - 接口的默认方法和静态方法:允许在接口中提供方法实现。
- **模块化系统 (Java 9)**:通过
module-info.java文件定义模块和其依赖关系。
八、反射 (Reflection)
允许程序在运行时检查和操作类、方法、字段等信息。
- 核心类:
Class,Field,Method,Constructor。 - 用途:动态代理、框架开发(框架通过反射配置和加载用户类)、注解处理等。
九、注解 (Annotation)
为代码提供元数据信息。
- 内置注解:
@Override,@Deprecated,@SuppressWarnings,@FunctionalInterface。 - 元注解:用于定义注解的注解,如
@Target,@Retention,@Documented,@Inherited。 - 自定义注解:使用
@interface关键字定义。 - 注解处理:通过反射机制在运行时读取和处理注解。
十、网络编程
- 基于 TCP:使用
Socket和ServerSocket类。 - 基于 UDP:使用
DatagramSocket和DatagramPacket类。
十一、JVM 基础 (了解)
虽然不是语言特性,但对理解 Java 至关重要。
- 内存区域:堆 (Heap)、方法区 (Metaspace)、虚拟机栈、本地方法栈、程序计数器。
- **垃圾回收 (GC)**:如何判断对象可回收(引用计数法、可达性分析法),常见的垃圾回收算法(标记-清除、复制、标记-整理),以及常见的垃圾收集器(Serial, Parallel, CMS, G1, ZGC)。
- 类加载机制:加载、验证、准备、解析、初始化。类加载器(双亲委派模型)。
总结
要扎实掌握 Java,建议按照以下路径学习:
- 夯实基础:语言基础、OOP、异常、集合。
- 深入特性:泛型、I/O、多线程。
- 拥抱现代:熟练掌握 Java 8+ 的 Lambda、Stream API 和新日期时间 API。
- 理解原理:适当了解 JVM 内存模型和 GC 机制,这对写出高性能、健壮的代码和排查问题极有帮助。
- 实践应用:通过大量编码练习来巩固理论知识,尤其是集合、多线程和 Stream API 的使用。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 可乐大红袍🥤🥤🥤!
