本文基于 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→Integerchar→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:ssformat()(日期转字符串)、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 集合框架用于存储、操作一组对象,基于 CollectionMap 两大根接口设计,核心分为单列集合双列集合,兼顾有序 / 无序、可重复 / 不可重复特性。

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 节点流(直接操作数据源)
  • 字节节点流:FileInputStreamFileOutputStream
  • 字符节点流:FileReaderFileWriter
  • 扩展节点流:CharArrayReader/Writer(操作字符数组)、StringReader/Writer(操作字符串)
3.2.2 处理流(增强节点流功能)

处理流基于节点流封装,提升读写效率、简化操作,核心如下:

  • 缓冲流BufferedInputStream/BufferedOutputStream(字节缓冲流)、BufferedReader/BufferedWriter(字符缓冲流),通过缓冲区减少 IO 操作次数,大幅提升效率
  • 数据流DataInputStream/DataOutputStream,可读写基本数据类型和字符串,保证数据类型一致性。
  • 转换流InputStreamReader(字节转字符)、OutputStreamWriter(字符转字节),解决字节流与字符流转换问题,指定编码格式。
  • 打印流PrintStream(字节打印流)、PrintWriter(字符打印流),方便打印各种数据类型,支持自动刷新。
  • Filter 流:过滤流,基于装饰器模式扩展流功能,常见如 BufferedInputStream 本质是 Filter 流的实现。

四、多线程

Java 多线程实现并发编程,核心涵盖线程创建、状态、常用方法、线程同步三大模块。

4.1 线程创建方式

  1. 继承 Thread 类,重写 run() 方法。
  2. 实现 Runnable 接口,重写 run() 方法(推荐,避免单继承局限)。
  3. 实现 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 关键字 **:实现同步的核心方式,两种使用形式:
    1. 同步方法:修饰方法,锁为当前对象(实例方法)或 Class 对象(静态方法)。
    2. 同步代码块(开发常用):synchronized (锁对象) { 共享资源操作 },灵活控制锁范围,避免 “锁太多” 的弊端。
  • 核心原理:线程获取锁后执行代码块,执行完毕释放锁;其他线程等待获取锁,保证同一时间只有一个线程操作共享资源。

五、网络编程

Java 网络编程基于 TCP/IP 协议栈实现,核心涵盖 TCP、UDP 协议,Socket 通信、URL 等知识点。

5.1 核心协议

  • TCP 协议:传输控制协议,面向连接、可靠传输,三次握手建立连接,四次挥手断开连接,适合文件传输、数据通信等对可靠性要求高的场景。
  • UDP 协议:用户数据报协议,无连接、不可靠传输,速度快,适合视频直播、语音通话等对实时性要求高的场景,以 Packet(数据报)为传输单位。

5.2 Socket 编程

Socket 是网络通信的端点,分为服务器端 Socket 和客户端 Socket:

  1. 服务器端:创建 ServerSocket,监听指定端口,调用 accept() 等待客户端连接。
  2. 客户端:创建 Socket,指定服务器 IP 和端口,与服务器建立连接。
  3. 通信:通过 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(标签)。
  • 事件处理:通过 ActionListenerMouseListener 等监听器实现组件事件响应。

6.2 Swing 核心组件

Swing 是轻量级 GUI 组件库,兼容 AWT,核心组件包括:

  • 容器:JFrame(替代 Frame)、JPanelJScrollPane(滚动面板)。
  • 高级控件:JTable(表格)、JTree(树结构)、JComboBox(下拉框)、JButton(按钮,支持图标)。
  • 布局管理器:BorderLayout(边界布局)、FlowLayout(流式布局)、GridLayout(网格布局),替代手动设置组件位置。
  • 其他:Timer(定时器),支持定时执行任务。

七、注解和反射

注解与反射是 Java 高级特性,是框架(Spring、MyBatis 等)的底层实现基础,核心用于代码解析、动态配置、运行时操作类。

7.1 注解

注解是代码中的特殊标记,用于编译、运行时解析,JDK 内置常用注解及自定义注解:

  1. JDK 内置注解
    • @Override:重写父类方法,编译期检查。
    • @Deprecated:标记方法 / 类已废弃。
    • @SuppressWarnings:抑制编译警告。
  2. 元注解:用于修饰注解的注解,包括:
    • @Target:指定注解作用范围(类、方法、字段等)。
    • @Retention:指定注解保留策略(源码 / 编译期 / 运行时)。
    • @Inherited:允许子类继承父类的注解。
    • @Documented:注解生成到 Javadoc 中。
  3. 自定义注解:通过 @interface 定义,可包含属性,支持默认值。

7.2 反射

反射是指程序在运行时,动态获取类的信息(类、构造器、方法、字段)并动态操作其对象的能力,核心类位于 java.lang.reflect 包。

7.2.1 反射核心类
  • Class 类:反射的入口,代表运行时的类,通过 Class.forName()对象.getClass()类.class 获取。
  • Constructor 类:代表类的构造器,可动态创建对象。
  • Method 类:代表类的方法,可动态调用方法。
  • Field 类:代表类的成员变量,可动态获取 / 修改变量值。
  • Modifier 类:解析类、方法、变量的修饰符(public、private 等)。
7.2.2 反射核心应用
  1. 动态创建对象:通过 Class 获取构造器,调用 newInstance() 创建对象。
  2. 动态调用方法:通过 Class 获取 Method,调用 invoke() 执行方法,支持传入参数。
  3. 动态操作字段:通过 Class 获取 Field,调用 set()/get() 修改 / 获取字段值,可突破 private 权限限制。
  4. 框架底层:Spring 的 IOC 依赖反射创建 Bean,MyBatis 依赖反射映射数据库字段与实体类属性。

总结

本文梳理了 JavaSE 七大核心模块的关键知识点,常用类是开发基础,集合框架是数据处理核心,IO 流是数据读写关键,多线程是并发编程核心,网络编程是网络通信基础,GUI 适用于桌面开发,注解与反射是高级特性与框架底层支撑。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐