代码审计-Java原生常见类与接口

-- 普通 --

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对象数组)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇