Java核心API是Java语言的基础类库(JDK自带),封装了底层实现,提供了开发中常用的功能模块,是Java后端开发的核心工具。以下按功能模块详细介绍,聚焦后端开发高频使用的API,避免冗余。
1. 字符串处理相关API
负责字符串的创建、修改、比较等操作,是日常开发中最常用的API之一。
- 核心类:
java.lang.String、java.lang.StringBuilder、java.lang.StringBuffer - 关键功能与区别:
String:不可变字符串(创建后内容无法修改,每次修改都会生成新对象),适合字符串不频繁变动的场景(如常量定义、简单字符串拼接)。
常用方法:equals()(内容比较,区别于==的地址比较)、length()(获取长度)、substring()(截取子串)、indexOf()(查找字符位置)、trim()(去除首尾空格)。StringBuilder:可变字符串,非线程安全,效率高,适合单线程下频繁修改字符串的场景(如循环拼接字符串)。
常用方法:append()(追加内容)、insert()(插入内容)、reverse()(反转字符串)。StringBuffer:可变字符串,线程安全(方法加了synchronized),效率低于StringBuilder,适合多线程场景(如多线程日志拼接)。
2. 集合框架API(Java Collections Framework)
用于存储和操作一组数据,解决数组“长度固定、功能单一”的问题,是后端处理数据的核心工具。核心接口分为单列集合(存储单个元素)和双列集合(存储键值对),以下是高频实现类:
(1)单列集合(顶层接口:java.util.Collection)
-
List接口:有序、可重复、支持索引访问,适合存储“有序且可能重复”的数据(如用户列表、商品列表)。
核心实现类:ArrayList:底层是动态数组,查询快(通过索引直接访问)、增删慢(需移动元素),线程不安全,日常开发首选。
常用方法:add()(添加元素)、get(int index)(按索引获取)、remove(int index)(按索引删除)、size()(获取元素个数)。LinkedList:底层是双向链表,增删快(只需修改指针)、查询慢(需遍历),还可作为队列/栈使用,适合频繁增删的场景(如消息队列)。
-
Set接口:无序、不可重复,适合存储“不允许重复”的数据(如用户ID、标签列表)。
核心实现类:HashSet:底层是哈希表,无序、查询/增删效率高(时间复杂度O(1)),依赖hashCode()和equals()保证元素不重复(需重写这两个方法,否则按地址判断)。TreeSet:底层是红黑树,可按元素自然顺序(如数字升序、字符串字典序)排序,适合需要“排序且去重”的场景(如排行榜)。
(2)双列集合(顶层接口:java.util.Map)
存储“键(Key)-值(Value)”对,Key不可重复(重复会覆盖),Value可重复,适合存储“映射关系”数据(如用户ID→用户信息、配置项Key→配置值)。
核心实现类:
HashMap:底层是哈希表(数组+链表/红黑树),无序、查询/增删效率高(O(1)),线程不安全,日常开发首选。
常用方法:put(K key, V value)(存键值对)、get(K key)(按Key取值)、containsKey(K key)(判断Key是否存在)、keySet()(获取所有Key)、entrySet()(获取所有键值对)。TreeMap:底层是红黑树,Key按自然顺序排序,适合需要“按Key排序”的场景(如按日期排序的日志映射)。ConcurrentHashMap:线程安全的HashMap(JDK1.8后用CAS+ synchronized替代分段锁,效率高于传统同步集合),适合多线程场景(如并发缓存)。
3. 异常处理API
用于捕获和处理程序运行中的错误(如空指针、数组越界、IO错误),避免程序崩溃,核心类位于java.lang包下。
- 核心类与接口:
Throwable(所有异常/错误的顶层父类)、Exception(程序可处理的异常)、Error(程序无法处理的严重错误,如内存溢出)。 - 关键异常分类:
- 编译时异常(受检异常):必须显式处理(try-catch或throws声明),否则编译报错,如
IOException(IO操作异常)、SQLException(数据库操作异常)。 - 运行时异常(非受检异常):无需显式处理,通常是代码逻辑错误导致,如
NullPointerException(空指针)、IndexOutOfBoundsException(数组越界)、ClassCastException(类型转换错误)。
- 编译时异常(受检异常):必须显式处理(try-catch或throws声明),否则编译报错,如
- 核心语法:
try(包裹可能出错的代码)、catch(捕获并处理异常)、finally(无论是否异常,都会执行,常用于释放资源,如关闭IO流、数据库连接)、throw(手动抛出异常)、throws(声明方法可能抛出的异常)。
4. IO流API(输入输出流)
用于实现“设备间数据传输”(如文件读写、网络数据传输),核心类位于java.io包下,按“数据类型”分为字节流和字符流,按“流向”分为输入流和输出流。
(1)字节流(处理所有类型数据,如图片、视频、二进制文件)
- 顶层抽象类:
InputStream(输入字节流,读数据)、OutputStream(输出字节流,写数据)。 - 常用实现类:
FileInputStream/FileOutputStream:读写本地文件(如读取配置文件、写入日志文件)。BufferedInputStream/BufferedOutputStream:带缓冲区的字节流,通过“批量读写”减少IO次数,效率远高于普通字节流,开发中优先使用。
(2)字符流(仅处理文本数据,如.txt、.java文件,自动处理字符编码)
- 顶层抽象类:
Reader(输入字符流)、Writer(输出字符流)。 - 常用实现类:
FileReader/FileWriter:读写文本文件(注意:默认使用系统编码,可能出现乱码)。BufferedReader/BufferedWriter:带缓冲区的字符流,支持readLine()(读取整行文本)、newLine()(写入换行符),是处理文本的首选。InputStreamReader/OutputStreamWriter:“字节流→字符流”的转换流,可指定字符编码(如UTF-8),解决乱码问题(如读取网络传输的文本数据)。
5. 多线程API
用于实现“并发编程”(如处理多用户请求、异步任务),核心类和接口位于java.lang包下。
-
线程创建方式:
- 继承
Thread类:重写run()方法(定义线程执行逻辑),调用start()方法启动线程(注意:不能直接调用run(),否则是普通方法调用)。 - 实现
Runnable接口:重写run()方法,将接口实例传给Thread对象,启动线程(推荐:避免单继承限制,适合多线程共享资源)。 - 实现
Callable接口:重写call()方法(可返回结果、抛出异常),配合FutureTask获取线程执行结果(适合需要异步获取结果的场景,如异步计算)。
- 继承
-
线程控制与同步:
- 核心方法:
start()(启动线程)、sleep(long ms)(线程休眠,不释放锁)、wait()/notify()(线程通信,需在synchronized块中使用,释放锁)、join()(等待其他线程执行完毕)。 - 锁机制:
synchronized关键字(同步方法/同步块,保证原子性、可见性、有序性)、java.util.concurrent.locks.Lock接口(如ReentrantLock,可手动加锁/解锁,支持公平锁、可中断锁,功能比synchronized灵活)。 - 线程池:
java.util.concurrent.ExecutorService(线程池接口),通过Executors工具类创建(如newFixedThreadPool固定大小线程池、newCachedThreadPool缓存线程池),避免频繁创建销毁线程,提升性能,是企业开发的首选。
- 核心方法:
6. 泛型(Generic)
并非独立类,而是“参数化类型”的语法(本质是编译期语法糖,避免类型转换错误),核心作用是“约束集合存储的元素类型、提升代码复用性”。
- 核心用法:
- 泛型类/接口:如
ArrayList<E>(E是类型参数,实例化时指定具体类型,如ArrayList<String>表示存储字符串的集合)。 - 泛型方法:如
public <T> T getValue(T[] arr)(T是方法的类型参数,调用时自动推断类型)。 - 通配符:
?(表示任意类型)、? extends T(上限通配符,只能取不能存,如List<? extends Number>可接收List<Integer>、List<Double>)、? super T(下限通配符,只能存不能取,如List<? super Integer>可接收List<Number>、List<Object>)。
- 泛型类/接口:如
7. 反射(Reflection)
允许程序在“运行时”获取类的结构(如属性、方法、构造器)并操作,是框架(如Spring、MyBatis)的核心底层技术(如Spring的IOC依赖注入、MyBatis的Mapper接口绑定)。
- 核心类:
Class(代表类的字节码对象,是反射的入口,获取方式:Class.forName("全类名")、对象.getClass()、类名.class)、Field(类的属性)、Method(类的方法)、Constructor(类的构造器)。 - 常用操作:
- 创建对象:通过
Constructor.newInstance()(无参/有参构造)。 - 操作属性:
Field.set(Object obj, Object value)(设置属性值)、Field.get(Object obj)(获取属性值),需先调用setAccessible(true)突破访问权限(如操作private属性)。 - 调用方法:
Method.invoke(Object obj, Object... args)(调用方法,如调用Service的业务方法)。
- 创建对象:通过
以上是Java后端开发中“高频且核心”的API,需重点掌握集合框架、IO流、多线程的使用场景和底层原理,反射和泛型则需理解其在框架中的应用逻辑,为后续学习Spring、MyBatis等打下基础。
1096

被折叠的 条评论
为什么被折叠?



