Java SE 核心技术与平台总结
·
关于Java SE (Java Platform, Standard Edition) 的详细总结:
Java SE 核心技术与平台总结
Java SE 是 Java 平台的基础,为开发和部署桌面、服务器环境和嵌入式环境中的应用程序提供了核心 API 和运行环境。它是构建 Java EE (Enterprise Edition) 和 Java ME (Micro Edition) 应用的基础。
1. Java 语言基础
- 面向对象编程 (OOP): Java 是纯粹的面向对象语言(除基本数据类型外),核心概念包括:
- 类 (Class) 和 对象 (Object):类是对象的蓝图,对象是类的实例。
- 封装 (Encapsulation): 将数据(属性)和操作数据的方法(行为)捆绑在一起,并通过访问修饰符 (
public,private,protected,default) 控制对内部实现的访问。 - 继承 (Inheritance): 子类 (
extends) 可以继承父类的属性和方法,实现代码复用和层次化设计。 - 多态 (Polymorphism): 同一个接口或父类引用可以指向不同的子类对象,调用相同的方法名表现出不同的行为(主要通过方法重写
@Override实现)。
- 基本数据类型:
byte,short,int,long,float,double,char,boolean。以及对应的包装类 (Byte,Short等),用于在需要对象的地方(如集合)表示基本类型值。 - 变量与常量: 变量用于存储数据,常量 (
final) 一旦赋值不可更改。 - 运算符: 算术 (
+,-,*,/,%)、关系 (>,<,==,!=)、逻辑 (&&,||,!)、位 (&,|,^,~,<<,>>,>>>)、赋值 (=,+=)、条件 (?:)、instanceof等。 - 控制流:
if-else,switch-case,for,while,do-while,break,continue,return。 - 数组 (Array): 固定大小的同类型数据集合。支持一维和多维数组。
- 字符串 (String): 不可变字符序列。
StringBuilder和StringBuffer用于可变字符串操作(后者线程安全)。 - 注释:
//,/* ... */,/** ... */(Javadoc)。
2. 面向对象高级特性
- 抽象类 (Abstract Class): 不能被实例化,可能包含抽象方法(只有声明,没有实现),需要子类实现。用于定义通用模板。
- 接口 (Interface): Java 7 之前只能定义抽象方法和常量。Java 8 引入
default方法(有默认实现)和static方法。Java 9 引入private方法。用于定义行为契约,支持多重继承(类只能单继承)。 - 内部类 (Inner Class): 定义在另一个类内部的类,包括成员内部类、局部内部类、匿名内部类、静态嵌套类。用于逻辑分组、隐藏实现、实现回调等。
- 枚举 (Enum): 表示一组固定的常量(如星期、状态)。类型安全,可添加方法和字段。
- 注解 (Annotation): 提供元数据信息,用于编译检查(如
@Override)、框架配置(如 Spring)、代码生成(如 Lombok)等。可自定义注解。
3. 异常处理
- 概念: 处理程序运行时发生的错误或异常情况。
- 体系结构:
Throwable是所有错误 (Error) 和异常 (Exception) 的基类。- Error: 严重问题,通常不可恢复(如
OutOfMemoryError),应用程序不应捕获。 - Exception: 程序本身可能处理的问题。分为 受检异常 (Checked Exception) (如
IOException,SQLException,必须处理或声明抛出) 和 非受检异常 (Unchecked Exception / RuntimeException) (如NullPointerException,ArrayIndexOutOfBoundsException,通常由编程错误导致,不强制处理)。
- Error: 严重问题,通常不可恢复(如
- 处理机制:
- try-catch-finally:
try块包含可能抛出异常的代码,catch块捕获并处理特定类型异常,finally块无论是否发生异常都会执行(常用于资源释放)。 - throws: 在方法签名中声明该方法可能抛出的受检异常,将异常处理责任交给调用者。
- throw: 主动抛出一个异常对象。
- try-catch-finally:
4. 集合框架 (Collections Framework)
- 核心接口:
Collection(根接口),List(有序、可重复),Set(无序、唯一),Queue(队列),Deque(双端队列),Map(键值对映射,独立于Collection接口)。 - 常用实现类:
- List:
ArrayList(基于数组,随机访问快,增删慢),LinkedList(基于链表,增删快,随机访问慢),Vector(线程安全版的ArrayList, 较老),Stack(Vector子类)。 - Set:
HashSet(基于HashMap,无序),LinkedHashSet(维护插入顺序),TreeSet(基于红黑树,有序)。 - Queue/Deque:
LinkedList(也实现了Deque),PriorityQueue(优先级队列),ArrayDeque(数组实现的双端队列)。 - Map:
HashMap(基于哈希表,键无序),LinkedHashMap(维护键的插入或访问顺序),TreeMap(基于红黑树,键有序),Hashtable(线程安全版的HashMap, 较老),Properties(Hashtable子类,常用于配置文件)。
- List:
- 工具类:
Collections(提供排序、同步包装等静态方法),Arrays(操作数组的工具类)。
5. 输入/输出 (I/O)
- 核心概念: 流 (
Stream) 代表数据的流动,分为 字节流 (InputStream,OutputStream) 和 字符流 (Reader,Writer)。 - 节点流: 直接与特定数据源/目的地交互,如
FileInputStream,FileOutputStream,FileReader,FileWriter。 - 处理流/包装流: 对节点流或其他处理流进行包装,提供增强功能(如缓冲、转换、序列化等),如
BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter,InputStreamReader(字节转字符),OutputStreamWriter(字符转字节),ObjectInputStream,ObjectOutputStream(对象序列化/反序列化)。 - NIO (New I/O): Java 1.4 引入,提供基于通道 (
Channel) 和缓冲区 (Buffer) 的非阻塞或高效 I/O 操作。核心组件包括Buffer,Channel,Selector,Charset。
6. 多线程 (Multithreading)
- 概念: 允许程序同时执行多个任务(线程)。
- 创建线程:
- 继承
Thread类,重写run()方法。 - 实现
Runnable接口,实现run()方法,然后将Runnable对象传递给Thread构造函数(更推荐,避免单继承限制)。
- 继承
- 线程生命周期: 新建 (
New)、就绪 (Runnable)、运行 (Running)、阻塞 (Blocked/Waiting/Timed_Waiting)、终止 (Terminated)。 - 线程同步: 解决多线程访问共享资源时的并发问题。
- synchronized 关键字: 修饰方法或代码块,保证同一时刻只有一个线程执行。
- Lock 接口:
ReentrantLock等,提供更灵活的锁操作(如尝试获取锁、可中断锁)。
- 线程通信:
wait(),notify(),notifyAll()(需在synchronized块内调用)。 - 线程池 (
Executor Framework): Java 5 引入,有效管理线程资源。核心接口Executor,ExecutorService。常用实现ThreadPoolExecutor,ScheduledThreadPoolExecutor。工具类Executors提供创建线程池的工厂方法(需注意潜在风险)。 - 原子变量 (
java.util.concurrent.atomic): 如AtomicInteger,提供线程安全的无锁原子操作。 - 并发集合 (
java.util.concurrent): 如ConcurrentHashMap,CopyOnWriteArrayList,提供线程安全的集合实现。
7. 泛型 (Generics)
- 目的: 提供类型安全性和消除强制类型转换。
- 核心: 在类、接口、方法上使用类型参数(如
class Box<T>)。在创建实例或调用方法时指定具体类型(如Box<Integer> intBox = new Box<>();)。 - 类型通配符:
?(未知类型),? extends T(上界,T 或其子类),? super T(下界,T 或其父类)。用于增强 API 的灵活性。 - 类型擦除: Java 泛型在编译时进行类型检查,运行时类型信息会被擦除(替换为原始类型或边界)。
8. 反射 (Reflection)
- 概念: 允许程序在运行时检查和修改类、对象、方法、字段等结构信息。
- 核心类:
Class,Field,Method,Constructor。 - 应用场景: 框架开发(如 Spring 依赖注入)、动态代理、IDE 调试、测试工具等。
- 性能考虑: 反射操作通常比直接调用慢,应谨慎使用。
9. 注解处理
- 编译时处理: 通过注解处理器 (
AbstractProcessor) 在编译时扫描和处理注解,生成代码、报告错误等(如 Lombok)。 - 运行时处理: 通过反射 API 在运行时获取注解信息(如 Spring MVC 的
@RequestMapping)。
10. Lambda 表达式与函数式编程 (Java 8+)
- Lambda 表达式: 简洁地表示匿名函数(一段可传递的代码)。语法:
(parameters) -> expression或(parameters) -> { statements; }。 - 函数式接口 (Functional Interface): 只包含一个抽象方法的接口。可以使用
@FunctionalInterface注解标记。Java 内置常用函数式接口:Predicate<T>,Consumer<T>,Function<T,R>,Supplier<T>,Runnable等。 - 方法引用: 语法糖,用于直接引用已有方法。格式:
类名::方法名或对象::实例方法名。 - 流 API (
Stream API): 对集合进行复杂操作(过滤、映射、归约、收集等)的强大工具。支持顺序流和并行流。操作分为 中间操作 (返回新流,如filter,map,sorted) 和 终止操作 (产生结果或副作用,如forEach,collect,reduce)。
11. JDBC (Java Database Connectivity)
- 目的: 提供独立于特定数据库的统一 API,用于连接和操作关系型数据库。
- 核心接口:
DriverManager,Connection,Statement,PreparedStatement(预编译,防SQL注入),CallableStatement(调用存储过程),ResultSet。 - 基本步骤:
- 加载数据库驱动 (
Class.forName()或自动加载)。 - 建立连接 (
DriverManager.getConnection(url, user, password))。 - 创建语句对象 (
createStatement,prepareStatement,prepareCall)。 - 执行 SQL (
executeQuery,executeUpdate,execute)。 - 处理结果集 (
ResultSet)。 - 关闭资源 (
close()方法,通常使用 try-with-resources 自动关闭)。
- 加载数据库驱动 (
- 连接池: 管理数据库连接,提高性能。常用库如 HikariCP, Apache DBCP, C3P0。
12. 模块化系统 (Java Platform Module System - JPMS, Java 9+)
- 目的: 解决“JAR地狱”、增强封装性、改进依赖管理和运行时配置。
- 核心: 模块 (
module) 是代码和数据的自描述集合。模块声明文件 (module-info.java) 定义了模块名、依赖 (requires)、导出的包 (exports)、使用的服务 (uses)、提供的服务 (provides ... with ...)。 - 强封装: 未显式导出的包对其他模块不可见(即使
public)。
13. 其他重要特性与工具
- 日期时间 API (
java.time, Java 8+): 替代老旧的Date和Calendar,提供不可变、线程安全的日期时间处理类(LocalDate,LocalTime,LocalDateTime,ZonedDateTime,Period,Duration等)。 - Optional 类 (Java 8+): 用于包装可能为
null的对象,避免空指针异常,显式处理可能的缺失值。 - Try-with-Resources (Java 7+): 自动关闭实现了
AutoCloseable接口的资源(如InputStream,Connection),简化资源管理代码。 - Javadoc: 从源代码注释生成 API 文档的工具。
- JVM (Java Virtual Machine): Java 程序的运行环境。负责加载字节码 (
.class)、验证、解释/编译执行 (JIT)、内存管理(堆、栈、方法区/元空间)、垃圾回收 (GC)。 - Java 开发工具包 (JDK): 包含开发 Java 程序所需的工具(编译器
javac、打包工具jar、文档生成器javadoc、调试器jdb等)和 JRE。 - Java 运行时环境 (JRE): 包含运行 Java 程序所需的 JVM 和核心类库。
总结
Java SE 提供了一个强大、稳定、安全且跨平台的开发环境。它涵盖了从语言基础、面向对象、异常处理、集合、I/O、多线程、泛型、反射等核心编程概念,到数据库连接 (JDBC)、函数式编程 (Lambda, Stream)、模块化等高级特性。理解并掌握 Java SE 的核心技术栈是成为一名合格 Java 开发者的基石。随着 Java 的持续演进(通常每 6 个月发布一个特性版本),新的特性和改进不断被引入,开发者需要保持学习。
更多推荐

所有评论(0)