-- 普通 --
CharSequence 接口
- 特点: 实现类 - CharBuffer, Segment, String, StringBuffer, StringBuilder
- 作用: 代表可读的字符序列
String 类
- 特点: java.lang.String类, 不可变对象(Immutable)
- 作用: 代表字符串
-- 实例方法 --
= 判空与长度 =
int length()
作用: 返回字符串长度(字符数)
boolean isEmpty()
作用: 判断字符串长度是否为0 (等同于length() == 0)
注意: 如果字符串为null, 调用此方法会抛出 NullPointerException
boolean isBlank()
作用: 判断字符串是否为空,或仅包含Unicode空白字符
Unicode空白字符: 空格/制表符/换行符等,Unicode空白字符的判定不同java版本都有不同
= 去除空白 =
String trim()
作用: 去除字符串首尾的ASCII空白字符 (ASCII<=32的字符)
局限: 无法识别Unicode空白字符(如全角空格)
String strip()
作用: 去除字符串首尾的所有Unicode空白字符
String stripLeading()
作用: 仅去除字符串开头的Unicode空白字符
String stripTrailing()
作用: 仅去除字符串结尾的Unicode空白字符
= 比较与匹配 =
boolean equals(Object anObject)
作用: 比较字符串内容是否相同(区分大小写)
boolean equalsIgnoreCase(String anotherString)
作用: 比较字符串内容是否相同(忽略大小写)
boolean contains(CharSequence s)
作用: 判断是否包含指定的字符序列
boolean startsWith(String prefix)
作用: 判断字符串是不是以指定前缀prefix开头的
boolean startsWith(String prefix, int toffset)
作用: 判断从指定索引开始是否以prefix开头
boolean endsWith(String suffix)
作用: 判断是否以 suffix 结尾
boolean matches(String regex)
作用: 判断整个字符串是否匹配给定的正则表达式(必须整个字符串匹配,而非判断是否存在子序列被匹配)
= 查找 =
int indexOf(String str)
作用: 返回指定子字符串第一次出现的索引, 未找到返回 -1
int lastIndexOf(String str)
作用: 返回指定子字符串最后一次出现的索引
= 替换与修改 =
String replace(CharSequence target, CharSequence replacement)
作用: 将字符串中所有的target替换为replacement(字面量替换, 非正则) 后返回
注: 替换从头到尾进行,例如将字符串“aaa”中的“aa”替换为“b”将得到“ba”而不是“ab”
String replaceAll(String regex, String replacement)
作用: 使用正则regex匹配并替换所有符合条件的子串 后返回
String repeat(int count)
作用: 将原字符串重复 count 次并返回
示例: "abc".repeat(3) -> "abcabcabc"
= 分割与流处理 =
String[] split(String regex)
作用: 根据正则 regex 将字符串分割为数组
Stream<String> lines()
作用: 将多行字符串按行分割, 返回一个 Stream 流
优势: 高效处理多行文本(如读取文件内容), 自动识别 \n, \r, \r\n
= 转换与格式化 =
String toUpperCase() / toLowerCase()
作用: 全转大写 / 全转小写
char[] toCharArray()
作用: 将字符串转换为字符数组
String formatted(Object... args)
作用: 实例方法的格式化, 等同于 String.format(this, args)
示例: "Name: %s".formatted("Tom") -> "Name: Tom"
String indent(int n)
作用: 调整字符串的缩进, n > 0 增加空格, n < 0 减少空格
-- 静态方法 --
static String join(CharSequence delimiter, CharSequence... elements) // JDK 8+
作用: 使用指定分隔符连接多个字符串
示例: String.join("-", "2025", "11", "26") -> "2025-11-26"
static String format(String format, Object... args)
作用: 返回格式化的字符串(类似 C 语言 printf)
static String valueOf(Object obj)
作用: 将对象转换为字符串, 若 obj 为 null 则返回 "null" (避免空指针)
StringBuilder 类
- 特点: java.lang.StringBuilder, 可变对象 (Mutable)
- 作用: 代表可变的字符序列
-- 构造方法 --
StringBuilder()
作用: 创建一个不带字符的字符串构建器, 初始容量为16个字符
StringBuilder(int capacity)
作用: 创建一个不带字符的字符串构建器,但指定初始容量为capacity
优势: 如果预知字符串很长,指定容量可减少底层数组扩容(Arrays.copyOf)的次数,提升性能
StringBuilder(String str)
作用: 构造一个初始化为指定字符串内容的字符串构建器
-- 实例方法 --
StringBuilder append(boolean/char/int/long/String/Object...)
作用: 将参数的字符串表示形式追加到序列末尾
特点: 返回对象本身(this),支持链式调用(例如:sb.append("a").append("b"))
StringBuilder insert(int offset, String str)
作用: 将字符串插入到此字符序列中指定的位置offset
StringBuilder delete(int start, int end)
作用: 移除此序列的子字符串中的字符(包含start,不包含end)
StringBuilder replace(int start, int end, String str)
作用: 使用给定String中的字符替换此序列的子字符串中的字符
StringBuilder reverse()
作用: 将此字符序列用其反转形式取代 (例如 "abc" -> "cba")
void setLength(int newLength)
作用: 设置字符序列的长度,如果小于当前长度,则截断;如果大于,则用空字符填充
技巧: sb.setLength(0)是清空StringBuilder内容最快的方法之一
String toString()
作用: 将当前构建器中的数据转换为字符串 (返回一个新的String对象)
List 接口
- 特点: java.util.List
- 作用: 代表有序集合, 允许存储重复元素(
ArrayList 是大小可变的数组实现)
- 注: List有实现类java.util.ArrayList, 是大小可变的数组
-- 实例方法 --
boolean add(E e)
作用:将指定的元素添加到此列表的尾部
void add(int index, E element)
作用:在此列表中的指定位置插入指定的元素
E get(int index)
作用:返回此列表中指定位置的元素
E remove(int index)
作用:移除此列表中指定位置的元素并返回
int size()
作用:返回此列表中的元素数
List<E> subList(int fromIndex, int toIndex)
作用:返回列表中指定的fromIndex(包括)和toIndex(不包括)之间的部分视图
Map 接口
- 特点: java.util.Map
- 作用: 存储键值对的数据结构, 键不可重复
- 注: Map有实现类java.util.HashMap
-- 实例方法 --
V put(K key, V value)
作用:将指定的值与此映射中的指定键关联(即加入键值对)
V get(Object key)
作用:返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回null
boolean containsKey(Object key)
作用:如果此映射包含指定键的映射关系,则返回true
注意:如果使用自定义对象作为Key, 必须重写内部的equals()和hashCode()方法
Set<K> keySet()
作用:返回此映射中包含的键的Set视图
V getOrDefault(Object key, V defaultValue)
作用:返回指定键映射的值,若该键不存在则返回默认值defaultValue
Enum类
- 特点: java.lang.Enum 类, 类泛型
<E extends Enum<E>>
- 作用: 枚举类都继承自Enum类
-- 静态方法 --
T valueOf(String)
作用:返回该枚举类中对应名字的常量
T[] values()
作用:返回该枚举类的所有常量组成的数组
-- 实例方法 --
final int ordinal()
作用:返回该枚举常量的序数(即声明顺序,从0开始)
final String name()
作用:返回该枚举常量的名称
String toString()
作用:返回该枚举常量的名称,相比于name(),该方法允许重写
final boolean equals(Object other)
作用:判断传入的对象是否与当前枚举常量是同一个实例(注:枚举是单例),与==完全等效
final int compareTo(E o)
作用:按枚举常量的ordinal()(声明顺序)比较大小,返回差值(若为负数,代表当前枚举常量在o之前)
-- 数据库(原生) --
DriverManager 类
- 特点: java.sql.DriverManager 类
- 作用: 负责管理数据库驱动程序并建立与数据库的连接, 驱动通过
Class.forName("全限定名");进行加载
- 驱动: com.mysql.cj.jdbc.Driver(
MySQL8.0+) com.mysql.jdbc.Driver(MySQL5.x) org.postgresql.Driver(PostgreSQL) oracle.jdbc.driver.OracleDriver 或 oracle.jdbc.OracleDriver(Oracle) com.microsoft.sqlserver.jdbc.SQLServerDriver(SQLServer) org.sqlite.JDBC(SQLite)
-- 静态方法 --
Connection getConnection(String url)
Connection getConnection(String url, String user, String password)
Connection getConnection(String url, Properties info) //info包含连接参数user/password
作用:建立与指定数据库的连接
注:url格式为-jdbc:subprotocol:subname
Connection 接口
- 特点: 继承 Wrapper AutoCloseable
- 作用: 代表与数据库的连接(会话)
-- 实例方法 --
- 连接 -
void close()
作用:释放连接的数据库和JDBC资源
boolean isClosed()
作用:判断连接是否已经关闭
- 事务 -
void setAutoCommit(boolean autoCommit)
作用:设置自动提交模式,为true(默认)表示每条SQL执行后自动提交,为false则需要手动调用commit()或rollback()
void commit()
作用:提交当前事务(仅在autoCommit=false时有效),使自上次提交/回滚后的所有更改永久化
void rollback()
作用:回滚当前事务(仅在autoCommit=false时有效),撤销所有未提交的更改
- SQL语句 -
Statement createStatement()
作用:创建Statement对象,用于执行不带参数的静态SQL语句
PreparedStatement prepareStatement(String sql)
作用:创建PreparedStatement对象,用于执行待参数的预编译语句
sql:包含一个或多个?参数占位符的SQL语句
Statement 接口
- 特点: 继承 Wrapper AutoCloseable
- 作用: 用于执行不带参数的静态SQL语句
-- 实例方法 --
- 执行 -
ResultSet executeQuery(String sql)
作用:执行SELECT查询语句,返回结果集(ResultSet对象)
int executeUpdate(String sql)
作用:执行INSERT/UPDATE/DELETE/CREATE等操作语句,返回更新计数(受影响的行数)
boolean execute(String sql)
作用:执行可能返回多种结果的SQL语句,返回true表示结果为ResultSet结果集,为false代表是更新计数或无结果
注:需配合getResultSet() getUpdateCount() getMoreResults()处理后续结果
- 批量执行 -
void addBatch(String sql)
作用:将SQL指令添加到处理列表中,用于通过executeBatch进行批量执行
int[] executeBatch()
作用:批量执行处理列表中的sql语句,返回每个命令的更新计数组成的数组
void clearBatch()
作用:清空处理列表,用于取消未执行的批量操作
- 结果 -
//存在一个指针,指向执行结果,通过getMoreResultes移动指针,用getResultSet/getUpdateCount获取当前指针指向的结果
ResultSet getResultSet()
作用:获取当前执行结果的结果集,若执行结果为更新计数/空,返回null
int getUpdateCount()
作用:获取当前执行结果的更新计数,若执行结果为ResultSet结果集,返回-1
boolean getMoreResults()
作用:移动到下一个结果,返回true代表下一个结果为ResultSet,返回false代表下一个结果为更新计数/无结果
- 资源 -
void close()
作用:释放Statement的数据库资源,同时关闭关联的ResultSet
void setQueryTImeout(int seconds)
作用:设置语句执行的超时时间,超时后抛出SQLTimeoutException
Connection getConnection()
作用:获取此Statement的Connection对象
PreparedStatement 接口
- 特点: 继承 Statement Wrapper AutoCloseable
- 作用: 用于执行预编译的SQL语句
-- 实例方法 --
- 执行 -
ResultSet executeQuery()
作用:执行预编译的SELECT查询语句,返回结果集(ResultSet对象)
int executeUpdate()
作用:执行预编译的INSERT/UPDATE/DELETE/CREATE等操作语句,返回更新计数(受影响的行数)
boolean execute()
作用:执行可能返回多种结果的预编译SQL语句,返回true表示结果为ResultSet结果集,为false代表是更新计数或无结果
注:需配合getResultSet() getUpdateCount() getMoreResults()处理后续结果
- 参数绑定 -
void setInt(int parameterIndex, int x) //parameterIndex代表绑定的位置下角标,从1开始
作用:绑定整数参数,对应INTEGER类型
void setString(int parameterIndex, String x)
作用:绑定字符串参数,对应VARCHAR类型
void setDate(int parameterIndex, Date x)
作用:绑定日期参数,对应DATE类型
void setObject(int parameterIndex, Object x)
作用:绑定任意类型参数(如自定义对象),驱动会自动转化为的对应的SQL类型
void setNull(int parameterIndex, int sqlType)
作用:绑定NULL,需指定NULL对应的SQL类型
- 批量执行 -
void addBatch()
作用:将SQL指令添加到处理列表中,用于通过executeBatch进行批量执行
int[] executeBatch()
作用:批量执行处理列表中的sql语句,返回每个命令的更新计数组成的数组
void clearBatch()
作用:清空处理列表,用于取消未执行的批量操作
- 资源 -
void close()
作用:释放Statement的数据库资源,同时关闭关联的ResultSet
void clearParameters()
作用:清除当前绑定的所有参数值
Connection getConnection()
作用:获取此Statement的Connection对象
-- 特殊类 --
Object 类
- 特点: java.lang.Object 类
- 作用: 所有类的父类, 只要类没有明确继承一个父类, 该类就会自动继承 Object
-- 实例方法 --
String toString()
作用:返回对象的字符串表示形式
final Class<?> getClass()
作用:返回对象的Class对象
Math
- 特点: java.lang.Math
- 作用: 提供了许多基本数值运算的静态方法
-- 静态方法 --
double pow(double a, double b)
作用:返回a的b次方值
注:返回值为双浮点数,而非整数
System 类
- 特点: final类, java.lang.System
- 作用: 提供了大量与输入与运行时环境进行交互的字段与方法
-- 字段 --
System.in InputStream类,代表标准输入流
System.out PrintStream类,代表标准输出流
System.err PrintStream类,代表错误输出流
Arrays 类
- 特点: java.util.Arrays
- 作用: 提供了许多操控数组的静态方法
-- 静态方法 --
void sort(数据类型[] a)
作用:将数组按数字升序排序
void Arrays.toString(数据类型[] a)
作用:返回数组的字符串表达形式
Scanner 类
- 特点: java.util.Scanner
- 作用: 提供了更方便的方法来处理流
-- 构造函数 --
Scanner(InputStream source) 输入流扫描
Scanner(String source) 字符串扫描
Scanner(File source) 文件扫描
-- 实例方法 --
String next()
作用:读取(返回)下一个字段(默认以空白符为分隔符)
boolean hasNext()
作用:检查是否有下一个字段,有则返回true
String nextLine()
作用:读取一行文本(默认以换行符为分隔符)
boolean hasNextLine()
作用:检查是否有下一行,有则返回true
byte nextByte()
int nextInt()
short nextShort()
long nextLong()
float nextFloat()
double nextDouble()
boolean nextBoolean()
作用:接收下一个字段并返回,若字段内容非对应数据类型则报错
注:其中Float与Double可识别整形,Boolean只识别true/false(不分大小写),不识别0和1
boolean hasNextByte()
boolean hasNextInt()
boolean hasNextShort()
boolean hasNextLong()
boolean hasNextFloat()
boolean hasNextDouble()
boolean hasNextBoolean()
作用:检查下一个字段是否为对应数据类型
注:其中Float与Double可识别整形,Boolean只识别true/false(不分大小写),不识别0和1
-- 进程类 --
Runtime 类
- 特点: java.lang.Runtime
- 作用: 代表Java程序运行的JVM实例(运行时对象), 用于与当前java运行时环境进行交互 -- 静态方法 --
{java}Runtime getRuntime()作用: 获取当前Java程序关联的运行时对象 -- 实例方法 --
{java}Process exec(String command){java}Process exec(String command, String[] envp){java}Process exec(String command, String[] envp, File dir){java}Process exec(String[] cmdarray){java}Process exec(String[] cmdarray, String[] envp){java}Process exec(String[] cmdarray, String[] envp, File dir)作用: 创建一个新进程, 并在进程中执行指定命令 command: 字符串命令 cmdarray: 命令数组, 第一个元组为命令, 后续为命令的参数 envp: 环境变量数组(元素是格式为"Path=/usr/bin"的字符串), 若为null则继承当前进程的环境 dir: 子进程的工作目录, 若为null则继承当前进程的工作目录 返回值: 虽然写的是Process, 但实际返回的是Process类的具体子类
Process 类
- 特点: 抽象类, java.lang.Process
- 作用: 代表进程, 用于操控进程 -- 实例方法 --
{java}abstract InputStream getErrorStream作用: 返回进程错误输出的输入流
{java}abstract InputStream getInputSream作用: 返回进程标准输出的输入流
{java}abstract OutputStream getOutputStream作用: 返回进程标准输入的输出流
-- 流类 --
OutputStream 类
- 特点: 抽象类, java.io.OutputStream, 是所有字节输出流类的基类
- 作用: 所有字节输出流的基类, 用于将字节数据写入目标
- 特点: 在write时并不会立即写入物理设备(如磁盘/网络),而是先写入内存缓冲区,必须调用flush()或close()才能确保数据真正发送
-- 实例方法 --
void write(byte[] b)
作用:将字节数组b中的b.length个字节写入此输出流
void write(byte[] b, int off, int len)
作用:将字节数组b中从off下角标开始的len个字节写入此输出流
void flush()
作用:刷新此输出流,强制将缓冲区中任何缓冲的输出字节写出到目标设备
注意:虽close()通常会调用flush(),但在长连接或分段传输场景下,需要手动调用flush()来即时发送数据
void close()
作用:关闭流并释放相关系统资源
InputStream 类
- 特点: 抽象类, java.io.InputStream, 是所有字节输入流类的基类
- 作用: 所有字节输入流的基类, 用于读取目标的字节数据
- 常用场景:
System.in (标准输入流) 是该类的一个实例
-- 实例方法 --
int read()
作用:读取流的一个字节数据,将读取值作为int值返回(范围0-255),若到达流的结尾,则返回-1
int read(byte[] b)
作用:(最多)读取b.length个字节,存储在字节数组b中,返回读取的字节数,若到达流的结尾,则返回-1
注:read只有当完全没有数据可读时才会阻塞,若有数据但长度不满b.length时,会读取并立即返回,而不会阻塞
int read(byte[] b, int off, int len)
作用:(最多)读取len个字节,存储在字节数组b中(从下角标off开始存储),返回读取的字节数,若到达流的结尾,则返回-1
注:read只有当完全没有数据可读时才会阻塞,若有数据但长度不满b.length时,会读取并立即返回,而不会阻塞
byte[] readAllBytes()
作用:读取流中剩余的所有字节,并将其作为一个字节数组返回
byte[] readNBytes(int len)
作用:从流中读取指定数量(len)的字节,并返回字节数组
int readNBytes(byte[] b, int off, int len)
作用:将指定数量len的字节读取到数组b中(从下角标off开始存储)
注:与read的区别在于,此方法会尽力读取直到读满len个字节或流结束,而普通read可能只读取部分就返回
long transferTo(OutputStream out)
作用: 直接将此输入流的所有字节传输(拷贝)到指定的输出流out中
PrintStream 类
- 特点: java.io.PrintStream ( java.io.FilterOutputStream -- java.io.OutputStream )
- 作用: 增强的OutputStream, 代表格式化字节输出流, 用于输出格式化数据到目标
- 常用场景:
System.out (标准输出流) 和 System.err (标准错误流) 都是 PrintStream 的实例
-- 构造方法 --
PrintStream(OutputStream out, boolean autoFlush)
作用: 创建一个新的打印流, 若autoFlush为true, 则每当写入字节数组、调用println方法或写入换行符时, 都会自动刷新缓冲区
PrintStream(String fileName)
作用: 创建一个直接指向文件的新打印流(无需手动创建FileOutputStream)
-- 实例方法 --
void print(boolean/char/char[]/double/float/int/long/Object/String)
作用: 输出到实例所代表的流(写入方式与write方法完全相同)
void println(boolean/char/char[]/double/float/int/long/Object/String)
作用: 输出到实例所代表的流,然后换行(换行所用符号由line.separator定义)
PrintStream printf(String format, Object... args)
PrintStream format(String format, Object... args)
作用:输出格式化字符串到实例所代表的流
boolean checkError()
作用:刷新流并检查其错误状态,如果底层输出流抛出过IOException,则返回true
注意:这是检测PrintStream是否写入失败的唯一方法
Writer 类
- 特点: 抽象类, java.io.Writer
- 作用: 所有字符输出流的基类, 用于将字符数据写入目标
-- 实例方法 --
= 写入 =
void write(int c)
作用:写入单个字符(c的低16位)
void write(char[] cbuf)
作用:写入字符数组cbuf中的所有字符
abstract void write(char[] cbuf, int off, int len)
作用:写入字符数组cbuf中,从off开始的len个字符
void write(String str)
作用:写入完整的字符串str
void write(String str, int off, int len)
作用:写入字符串str中从off开始的len个字符
= 资源与刷新 =
abstract void flush()
作用:刷新该流的缓冲,将所有缓冲的字符立即写入预期目标(对于字符流非常重要,防止数据滞留缓冲区)
abstract void close()
作用:关闭此流, 但在关闭前会自动先调用flush()
Reader 类
- 特点: 抽象类, java.io.Reader
- 作用: 所有字符输入流的基类, 用于读取目标的字符数据
-- 实例方法 --
int read()
作用:读取单个字符, 并作为int返回(范围0-65535), 若到达流的结尾, 则返回-1
int read(char[] cbuf)
作用:读取cbuf.length个字符, 存储在字符数组cbuf中
返回:实际读取的字符数, 若到达流的结尾, 则返回-1
abstract int read(char[] cbuf, int off, int len)
作用:读取len个字符, 存储在cbuf中(从下角标off开始存储)
返回:实际读取的字符数, 若到达流的结尾, 则返回-1
long skip(long n)
作用:跳过n个字符
void close()
作用:关闭该流并释放与之关联的所有系统资源
InputStreamReader 类
- 特点: java.io.InputStreamReader (继承java.io.Reader)
- 作用: 代表字符输入流转化器, 用于将 字节输入流(
InputStream) 转化为字符输入流 (Reader的子类)
-- 构造方法 --
InputStreamReader(InputStream in)
InputStreamReader(InputStream in, String charsetName)
InputStreamReader(InputStream in, Charset cs)
InputStreamReader(InputStream in, CharsetDecoder dec)
作用: 将InputStream转化为(指定字符集/字符编码集)的InputStreamReader
-- 实例方法 --
String getEncoding()
作用:返回此流使用的字符编码名称
-- 从Reader类继承/实现的实例方法 --
int read()
作用:读取单个字符, 并作为int返回(范围0-65535), 若到达流的结尾, 则返回-1
int read(char[] cbuf)
作用:读取cbuf.length个字符, 存储在字符数组cbuf中
返回:实际读取的字符数, 若到达流的结尾, 则返回-1
abstract int read(char[] cbuf, int off, int len)
作用:读取len个字符, 存储在cbuf中(从下角标off开始存储)
返回:实际读取的字符数, 若到达流的结尾, 则返回-1
long skip(long n)
作用:跳过n个字符
void close()
作用:关闭该流并释放与之关联的所有系统资源
OutputStreamWriter
- 特点: java.io.OutputStreamWriter (java.io.Writer)
- 作用: 代表字符输出流转化器, 用于将 字节输出流(
OutputStream) 转化为 字符输出流 (Writer的子类)
-- 构造方法 --
OutputStreamReader(OutputStream out)
OutputStreamReader(OutputStream out, String charsetName)
OutputStreamReader(OutputStream out, Charset cs)
OutputStreamReader(OutputStream out, CharsetDecoder dec)
作用: 将OutputStream转化为(指定字符集/字符编码集)的OutputStreamReader
-- 实例方法 --
String getEncoding()
作用:返回此流使用的字符编码名称
-- 从Writer类继承/实现的实例方法 --
= 写入 =
void write(int c)
作用:写入单个字符(c的低16位)
void write(char[] cbuf)
作用:写入字符数组cbuf中的所有字符
abstract void write(char[] cbuf, int off, int len)
作用:写入字符数组cbuf中,从off开始的len个字符
void write(String str)
作用:写入完整的字符串str
void write(String str, int off, int len)
作用:写入字符串str中从off开始的len个字符
= 资源与刷新 =
abstract void flush()
作用:刷新该流的缓冲,将所有缓冲的字符立即写入预期目标(对于字符流非常重要,防止数据滞留缓冲区)
abstract void close()
作用:关闭此流, 但在关闭前会自动先调用flush()
BufferedReader
- 特点: java.io.BufferedReader (java.io.Reader)
- 作用: 带有缓冲区的字符输入流, 包装其他字符输入流, 提供字符缓冲区以提高读取效率, 并提供按行读取的功能
-- 构造方法 --
BufferedReader(Reader in)
作用:创建一个使用默认大小输入缓冲区的缓冲字符输入流
BufferedReader(Reader in, int sz)
作用:创建一个使用指定大小(sz)输入缓冲区的缓冲字符输入流
-- 实例方法 --
String readLine()
作用:读取一个文本行,通过下列字符之一即可认为某行已终止:换行('\n')或回车('\r')或回车后直接跟着换行
返回:包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回null
Stream<String> lines()
作用:返回一个Stream,其元素是此BufferedReader读取的行
-- 特殊接口 --
Serializable 接口
- 特点: 没有任何属性和方法
- 作用: 类只有实现了Serializable接口才可以序列化
-- 序列化 --
简介
- 可序列化性: 对于自定义类, 只有实现了Serializable接口的类可以进行序列化, 同时这些类需要实现以下方法
private void writeObject(java.io.ObjectOutputStream out) throws IOException(在序列化时调用)
private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException;(在反序列化时调用)
private void readObjectNoData() throws ObjectStreamException; (可选)
ObjectOutputStream 类
- 特点: java.io.ObjectOutputStream ( java.io.OutputStream )
- 作用: 代表对象序列化输出流, 用于将Java对象序列化为字节流 并写入目标
-- 构造方法 --
ObjectOutputStream(OutputStream out)
作用: 创建一个写入指定字节输出流的ObjectOutputStream
-- 实例方法 --
void defaultWriteObject()
作用: 将所属类的非静态和非瞬态字段写入此流
特点: 只能在被序列化的自定义类的writeObject方法中引用
final void writeObject(Object obj)
作用: 将指定对象写入此流(序列化)
特点: 对于内置数据类的对象,对象的类、类的签名、以及类及其所有超类型的非瞬态和非静态字段的值都会写入; 对于自定义类的对象,会调用指定对象的writeObject方法,并将此流作为参数传入
protected void annotateClass(Class <?> cl)
作用: 在写入数据到此流(序列化)时自动调用,用于在序列化对象所属类前 对类进行注解(如修改元数据)
cl: 被序列化对象所属的类
特点: 默认情况下,此方法不执行任何操作,需要子类继承ObjectOutputStream并重写该方法后,在该子类创建的ObjectOutputStream实例中才可生效
注: 对此流中的每个唯一类 该方法只会自动 调用一次(后续序列化相同类的实例不会重复调用)
ObjectInputStream 类
- 特点: java.io.ObjectInputStream 父类-InputStream
- 作用: 代表对象反序列化输入流, 用于从目标反序列化恢复 Java 对象
-- 构造方法 --
protected ObjectInputStream(InputStream in)
作用: 创建一个从指定字节输入流读取的ObjectInputStream
-- 实例方法 --
void defaultReadObject()
作用: 从此流中读取所属类的非静态和非瞬态字段
特点: 只能在被反序列化的自定义类的readObject方法中引用
final Object readObject()
作用: 从此流的中读取一个对象并返回(反序列化)
特点: 对于内置数据类的对象,对象的类、类的签名、以及类及其所有超类型的非瞬态和非静态字段的值都会读取; 对于自定义类的对象,会调用指定对象的readObject方法,并将此流作为参数传入
protected Class <?> resolveClass(ObjectStreamClass desc)
作用: 在从此流读取数据(反序列化)时自动调用,用于在反序列化对象所属类后 对类存储的注解进行操作
desc: ObjectStreamClass类的实例(待定)
特点: 默认情况下,此方法不执行任何操作,需要子类继承ObjectInputStream并重写该方法后,在该子类创建的ObjectInputStream实例中才可生效
注: 对此流中的每个唯一类 该方法只会自动 调用一次(后续反序列化相同类实例不会重复调用)
-- 反射 --
java.lang.Class<T> 类
- 介绍: 每个类被加载到JVM时, JVM会为其创建一个唯一的Class对象, 包含了该类所有信息
- 获取: 可通过
类.class 或 实例对象.getclass() 或 Class.forName(全限定名) 获取 类.class 是一种语法, 而非字段; 实例对象.getclass() 是继承自Object类的实例方法; Class.forName(全限定名) 是Class类的静态方法
- 特点: 获取的Class对象对应的类无需用import引入
注意:实例也是可以用静态方法的
-- 静态方法 --
Class<?> forName(String classname)
作用:返回全限定名classname所指代类 的Class对象
Class<?> forName(Module module, String name)
作用:返回模块module中 二进制名称name所指代类 的Class对象
Class<?> forName(String name, boolean initialize, ClassLoader loader)
作用:返回全限定名classname所指代类 的Class对象
initialize:当name指定类是第一次加载时,是否初始化,为true则初始化(即执行static代码块)
loader:指定类的加载器(如 类.class.getClassLoader())
-- 实例方法 --
Field字段类
Field getField(String name): 返回指定公共字段
Field getDeclaredField(String name): 返回指定字段
Field[] getFields(): 返回包含所有公共字段的数组
Field[] getDeclaredFields(): 返回包含所有字段的数组
Method方法类
Method getMethod(String name, Class<?>... parameterTypes)
作用:返回 名字与 参数类型列表(Class对象) 指定的公共方法
Method getDeclaredMethod(String name, Class<?>... parameterTypes)
作用:返回 名字与 参数类型列表(Class对象) 指定的方法
Method[] getMethods()
作用:返回包含所有 公共方法 的数组
Method[] getDeclaredMethods()
作用:返回包含 所有方法 的数组
Constructor构造方法类
Constructor getConstructor(Class<?>... parameterTypes)
作用:获取 参数类型列表(Class对象) 指定的公共构造函数
Constructor getDeclaredConstructor(Class<?>... parameterTypes)
作用:获取 参数类型列表(Class对象) 指定的构造函数
Constructor[] getConstructors()
作用:返回包含 所有公共构造函数 的数组
Constructor[] getDeclaredConstructors()
作用:返回包含 所有构造函数 的数组
规律
Declared系 的方法可获取 所有声明在类中的 字段/方法/构造方法(包括私有),
但不包含从父类继承的 (非Declared包含从父类继承的 但不包含私有)
获取的若是私有, 则必须要将其改变 作用域(使用setAccessible方法) 后才可使用
java.lang.reflect.Field
-- 实例方法 --
Object get(Object obj)
作用:返回指定实例上该Field代表的字段的值
注:若Field代表的是静态字段,则obj填null
void set(Object obj, Object value)
作用:将指定实例上该Field代表的字段的值 设置为value
注:若Field代表的是静态字段,则obj无需填写或填null
void setAccessible(boolean flag)
作用:将此Field代表字段的accessible标志设为flag
注:值为true表示反射对象在使用时应禁止检查Java语言访问控制
(若Field代表的是私有字段,则需先设置该标志为true再使用其它实例方法)
int getModifiers()
作用:返回Field代表字段的修饰符(整数形式,用Modifier的静态方法来确认具体内容)
String getName()
作用:返回此Field代表字段的名称
Class<?> getType()
作用:获取Field代表字段的数据类型(Class对象)
java.lang.reflect.Method
-- 实例方法 --
Object invoke(Object obj, Object... args)
作用:调用指定实例的 该Method表示的方法,返回执行结果
注:若Method代表的是静态方法,则obj填null
void setAccessible(boolean flag)
作用:将Method代表方法的accessible标志设为flag
注:值为true表示反射对象在使用时应禁止检查Java语言访问控制
(若Method代表的是私有方法,则需先设置该标志为true再使用其它实例方法)
int getModifiers()
作用:返回Method代表方法的修饰符(整数形式,用Modifier的静态方法来确认具体内容)
Class<?> getReturnType()
作用:获取Method代表方法的返回类型(Class对象)
Class<?>[] getParameterTypes()
作用:获取Method代表方法的参数类型(Class对象数组)
java.lang.reflect.Constructor
-- 实例方法 --
T newInstance(Object... initargs)
作用:使用Constructor表示的构造函数 创建一个新实例 (无法使用私有构造函数)
void setAccessible(boolean flag)
作用:将Construtor代表构造方法的accessible标志设为flag
注:值为true表示反射对象在使用时应禁止检查Java语言访问控制
(若Construtor代表的是私有构造方法,则需先设置该标志为true再使用其它实例方法)
Class<?> getParameterTypes()
作用:获取构造函数的参数类型(Class对象)
int getModifiers()
作用:返回Construtor代表构造方法的修饰符(整数形式,用Modifier的静态方法来确认具体内容)
Class<?>[] getParameterTypes()
作用:获取Constructor代表的构造方法的参数类型(Class对象数组)