JavaSE 核心总结
本文基于 JavaSE 核心知识模块,从常用类、集合框架、IO 流、多线程、网络编程、GUI、注解与反射七大维度展开总结,覆盖核心考点、常用 API 及关键特性,适合 Java 基础复盘与面试备考,内容结构清晰、重点突出。
一、常用类
Java 常用类是日常开发的基础,核心涵盖工具类、包装类、日期时间类、字符串相关类四大类,掌握其特性能大幅提升代码效率与规范性。
1.1 工具类
- Random 类:用于生成随机数,支持生成随机整数、浮点数、布尔值等,适用于随机测试、验证码生成等场景。
- File 类:Java 中操作文件 / 目录的核心类,仅描述文件 / 目录的属性,不涉及文件内容读写。核心功能:
- 创建文件 / 目录:
createNewFile()、mkdir()、mkdirs() - 查看文件 / 目录:
exists()、isFile()、isDirectory()、list() - 修改文件 / 目录:
renameTo() - 删除文件 / 目录:
delete()、deleteOnExit()
- 创建文件 / 目录:
- UUID 类:生成通用唯一识别码,解决分布式系统中唯一标识生成问题,通过
UUID.randomUUID()调用。
1.2 包装类
Java 为 8 种基本数据类型提供对应包装类(int→Integer、char→Character 等),核心特性:
- 自动装箱 / 拆箱:JDK 1.5+ 支持,可直接将基本类型与包装类相互赋值,如
Integer a = 10;(装箱)、int b = new Integer(20);(拆箱)。 - 核心方法:
parseXxx()(字符串转基本类型)、valueOf()(基本类型转包装类)、xxxValue()(包装类转基本类型)。 - 缓存池:
Integer缓存-128~127范围内的包装类对象,使用==比较该范围数值时结果为true,超出范围为false。
1.3 日期时间类
Java 早期日期时间类存在线程安全等问题,JDK 1.8 引入新时间 API,核心分类如下:
| 类名 | 特性 | 常用方法 / 格式 |
|---|---|---|
| Date 类 | 旧版日期类,线程不安全,已被新 API 替代 | 存储时间戳,SimpleDateFormat 格式化 |
| SimpleDateFormat | 日期格式化工具 | 格式:yyyy-MM-dd HH:mm:ss,format()(日期转字符串)、parse()(字符串转日期) |
| Calendar 类 | 旧版日历类,线程不安全,建议使用 JDK 1.8 新时间类 | getInstance() 获取实例,get(Calendar.YEAR) 获取年份 |
| JDK 1.8 新时间类(LocalDate/LocalTime/LocalDateTime) | 线程安全、不可变 | now() 获取当前时间,plusDays()/minusMonths() 时间运算,format() 格式化 |
1.4 字符串相关类
字符串是 Java 开发高频使用对象,三者核心区别决定使用场景:
| 类名 | 特性 | 适用场景 | 核心方法 |
|---|---|---|---|
| String | 不可变(final 修饰),每次修改都会生成新对象 | 少量字符串操作、字符串常量 | equals()(比较内容)、charAt()、substring() |
| StringBuffer | 可变长,线程安全(同步),效率低 | 多线程环境、大量字符串拼接 | append()(拼接)、insert()、delete() |
| StringBuilder | 可变长,线程不安全(不同步),效率高 | 单线程环境、大量字符串拼接 | 同 StringBuffer,性能优于 StringBuffer |
注意:字符串拼接场景中,String str = "a" + 1 + 2 编译期会优化为 StringBuilder 拼接;String str = 1 + 2 + "a" 先计算数值加法再拼接。
二、集合框架
Java 集合框架用于存储、操作一组对象,基于 Collection 和 Map 两大根接口设计,核心分为单列集合和双列集合,兼顾有序 / 无序、可重复 / 不可重复特性。
2.1 单列集合(Collection 根接口)
Collection 派生出 List 和 Set 两大子接口,Iterator 为集合通用遍历接口。
2.1.1 List 接口(有序、可重复)
- ArrayList:底层基于动态数组实现,查询快、增删慢(尾部增删快),开发常用。核心方法:
add()、remove()、contains()、size()、get(int index)。 - LinkedList:底层基于双向链表实现,增删快、查询慢,适合频繁增删场景。核心方法:
getFirst()、getLast()、removeFirst()、addFirst()等链表专属操作。
2.1.2 Set 接口(无序、不可重复)
- HashSet:底层基于 HashMap 实现,无序、去重,依赖
hashCode()和equals()保证唯一性,开发常用。 - TreeSet:底层基于红黑树实现,可对元素进行排序(自然排序 / 定制排序),实现
Comparable接口或传入Comparator比较器。
2.2 双列集合(Map 根接口)
存储键值对(Key-Value),Key 不可重复、Value 可重复,核心实现类如下:
- HashMap:底层基于数组 + 链表 + 红黑树(JDK 1.8+),线程不安全,效率高,开发常用。初始容量 16,加载因子 0.75,链表长度≥8 且数组长度≥64 时转为红黑树。
- TreeMap:底层基于红黑树实现,可对 Key 进行排序,适用于需要有序键值对的场景。
三、IO 流
Java IO 流用于实现文件、网络等数据源的读写操作,核心分为字节流和字符流,按处理方式又可分为节点流和处理流。
3.1 流的分类
| 流类型 | 输入流(读) | 输出流(写) | 核心特点 |
|---|---|---|---|
| 字节流 | InputStream | OutputStream | 处理所有类型数据(文本、图片、视频等),读写单位为字节 |
| 字符流 | Reader | Writer | 仅处理文本数据,读写单位为字符,解决中文乱码问题 |
3.2 核心流分类
3.2.1 节点流(直接操作数据源)
- 字节节点流:
FileInputStream、FileOutputStream - 字符节点流:
FileReader、FileWriter - 扩展节点流:
CharArrayReader/Writer(操作字符数组)、StringReader/Writer(操作字符串)
3.2.2 处理流(增强节点流功能)
处理流基于节点流封装,提升读写效率、简化操作,核心如下:
- 缓冲流:
BufferedInputStream/BufferedOutputStream(字节缓冲流)、BufferedReader/BufferedWriter(字符缓冲流),通过缓冲区减少 IO 操作次数,大幅提升效率。 - 数据流:
DataInputStream/DataOutputStream,可读写基本数据类型和字符串,保证数据类型一致性。 - 转换流:
InputStreamReader(字节转字符)、OutputStreamWriter(字符转字节),解决字节流与字符流转换问题,指定编码格式。 - 打印流:
PrintStream(字节打印流)、PrintWriter(字符打印流),方便打印各种数据类型,支持自动刷新。 - Filter 流:过滤流,基于装饰器模式扩展流功能,常见如
BufferedInputStream本质是 Filter 流的实现。
四、多线程
Java 多线程实现并发编程,核心涵盖线程创建、状态、常用方法、线程同步三大模块。
4.1 线程创建方式
- 继承
Thread类,重写run()方法。 - 实现
Runnable接口,重写run()方法(推荐,避免单继承局限)。 - 实现
Callable接口,重写call()方法(支持返回值、异常抛出,配合FutureTask使用)。
4.2 线程状态
线程生命周期包含 5 种核心状态,通过 Thread 类方法控制:
- 新建:创建线程对象,未调用
start()。 - 运行:调用
start()后,获取 CPU 资源执行run()。 - 阻塞:线程暂停执行,释放 CPU 资源,如
sleep()、wait()、IO 阻塞。 - 死亡:
run()执行完毕或调用stop()(已废弃),线程终止。
4.3 线程常用方法
| 方法名 | 功能 | 注意事项 |
|---|---|---|
start() |
启动线程,进入就绪状态 | 不可重复调用,否则抛异常 |
run() |
线程执行体 | 直接调用为普通方法调用,非多线程执行 |
sleep(long millis) |
线程休眠指定毫秒数,进入阻塞 | 不会释放锁,抛出 InterruptedException |
join() |
等待线程执行完毕 | 可指定超时时间,释放锁 |
yield() |
线程让步,让出 CPU 资源给同优先级线程 | 不阻塞,仅重新竞争 CPU |
isLive() |
判断线程是否存活 | 线程启动后未死亡返回 true |
setPriority(int newPriority) |
设置线程优先级(1-10,默认 5) | 优先级高仅获取 CPU 概率大,不绝对 |
interrupt() |
中断线程 | 仅设置中断标志,不直接终止线程 |
4.4 线程同步
多线程并发操作共享资源时,易出现线程安全问题,核心解决方式为同步机制:
- ** Synchronized 关键字 **:实现同步的核心方式,两种使用形式:
- 同步方法:修饰方法,锁为当前对象(实例方法)或
Class对象(静态方法)。 - 同步代码块(开发常用):
synchronized (锁对象) { 共享资源操作 },灵活控制锁范围,避免 “锁太多” 的弊端。
- 同步方法:修饰方法,锁为当前对象(实例方法)或
- 核心原理:线程获取锁后执行代码块,执行完毕释放锁;其他线程等待获取锁,保证同一时间只有一个线程操作共享资源。
五、网络编程
Java 网络编程基于 TCP/IP 协议栈实现,核心涵盖 TCP、UDP 协议,Socket 通信、URL 等知识点。
5.1 核心协议
- TCP 协议:传输控制协议,面向连接、可靠传输,三次握手建立连接,四次挥手断开连接,适合文件传输、数据通信等对可靠性要求高的场景。
- UDP 协议:用户数据报协议,无连接、不可靠传输,速度快,适合视频直播、语音通话等对实时性要求高的场景,以
Packet(数据报)为传输单位。
5.2 Socket 编程
Socket 是网络通信的端点,分为服务器端 Socket 和客户端 Socket:
- 服务器端:创建
ServerSocket,监听指定端口,调用accept()等待客户端连接。 - 客户端:创建
Socket,指定服务器 IP 和端口,与服务器建立连接。 - 通信:通过 Socket 的输入流、输出流实现数据读写,通信结束后关闭流和 Socket。
5.3 其他核心类
- URL 类:统一资源定位符,用于访问网络资源,支持获取 URL 连接、读取网络资源内容。
- URLConnection:URL 连接类,可设置请求参数、请求头,实现 HTTP 通信。
- 文件上传 / 下载:基于 Socket 或 URLConnection 实现,通过字节流分块传输文件数据。
六、GUI(可选)
Java 图形用户界面(GUI)用于开发桌面应用,核心技术包括 AWT 和 Swing,其中 Swing 是 AWT 的扩展,功能更丰富、跨平台性更好。
6.1 AWT 核心组件
- 容器类:
Frame(顶级窗口,可设置标题、大小、关闭事件)、Panel(面板,非顶级容器)。 - 控件类:
Button(按钮)、TextField(文本框)、TextArea(文本域)、Label(标签)。 - 事件处理:通过
ActionListener、MouseListener等监听器实现组件事件响应。
6.2 Swing 核心组件
Swing 是轻量级 GUI 组件库,兼容 AWT,核心组件包括:
- 容器:
JFrame(替代 Frame)、JPanel、JScrollPane(滚动面板)。 - 高级控件:
JTable(表格)、JTree(树结构)、JComboBox(下拉框)、JButton(按钮,支持图标)。 - 布局管理器:
BorderLayout(边界布局)、FlowLayout(流式布局)、GridLayout(网格布局),替代手动设置组件位置。 - 其他:
Timer(定时器),支持定时执行任务。
七、注解和反射
注解与反射是 Java 高级特性,是框架(Spring、MyBatis 等)的底层实现基础,核心用于代码解析、动态配置、运行时操作类。
7.1 注解
注解是代码中的特殊标记,用于编译、运行时解析,JDK 内置常用注解及自定义注解:
- JDK 内置注解:
@Override:重写父类方法,编译期检查。@Deprecated:标记方法 / 类已废弃。@SuppressWarnings:抑制编译警告。
- 元注解:用于修饰注解的注解,包括:
@Target:指定注解作用范围(类、方法、字段等)。@Retention:指定注解保留策略(源码 / 编译期 / 运行时)。@Inherited:允许子类继承父类的注解。@Documented:注解生成到 Javadoc 中。
- 自定义注解:通过
@interface定义,可包含属性,支持默认值。
7.2 反射
反射是指程序在运行时,动态获取类的信息(类、构造器、方法、字段)并动态操作其对象的能力,核心类位于 java.lang.reflect 包。
7.2.1 反射核心类
- Class 类:反射的入口,代表运行时的类,通过
Class.forName()、对象.getClass()、类.class获取。 - Constructor 类:代表类的构造器,可动态创建对象。
- Method 类:代表类的方法,可动态调用方法。
- Field 类:代表类的成员变量,可动态获取 / 修改变量值。
- Modifier 类:解析类、方法、变量的修饰符(public、private 等)。
7.2.2 反射核心应用
- 动态创建对象:通过
Class获取构造器,调用newInstance()创建对象。 - 动态调用方法:通过
Class获取Method,调用invoke()执行方法,支持传入参数。 - 动态操作字段:通过
Class获取Field,调用set()/get()修改 / 获取字段值,可突破private权限限制。 - 框架底层:Spring 的 IOC 依赖反射创建 Bean,MyBatis 依赖反射映射数据库字段与实体类属性。
总结
本文梳理了 JavaSE 七大核心模块的关键知识点,常用类是开发基础,集合框架是数据处理核心,IO 流是数据读写关键,多线程是并发编程核心,网络编程是网络通信基础,GUI 适用于桌面开发,注解与反射是高级特性与框架底层支撑。
更多推荐




所有评论(0)