Java字符串(String_StringBuilder_StringBuffer)

原文链接: https://yq.aliyun.com/articles/684552

String类

不可变字符序列

 String类中使用字符数组保存字符串,但是字符数组是用final修饰的。不可变

   private final char value[];

构造方法:
String() 初始化一个新创建的 String 对象,使其表示一个空字符序列。
String(byte[] bytes) 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。
String(byte[] bytes, Charset charset) 通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。

方法
indexOf(char ch) 返回指定字符在此字符串中第一次出现处的索引
charAt(int index) 返回指定索引处的 char 值
lastIndexof() 返回指定字符在此字符串中最后一次出现处的索引。
startWith() 测试此字符串是否以指定的前缀开始。
endsWith()测试此字符串是否以指定的后缀结束
subString() 返回一个新的字符串,它是此字符串的一个子字符串。
split()根据给定正则表达式的匹配拆分此字符串。
toLowerCase()转换为小写,返回新字符串
toUpperCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为大写
equalsIgnoreCase()将此 String 与另一个 String 比较,不考虑大小写。

StringBuilder类

可变字符序列
线程不安全,效率高

构造函数:
StringBuilder() 构造一个其中不带字符的字符串生成器,初始容量为 16 个字符。
StringBuilder(int capacity) 构造一个其中不带字符的字符串生成器,初始容量由 capacity 参数指定。
StringBuilder(String str) 构造一个字符串生成器,并初始化为指定的字符串内容。

方法:
append(char c) 追加
delete(int start, int end) 删除start ~ end-1字符
deleteCharAt(int index)
ensureCapacity(int minimumCapacity) 确保容量大于minimumCapacity
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 把srcBegin~srcEnd复制到dst的dstBegin位置处
indexOf(String str) 返回str第一次出现的位置
insert(int offset, char c) 插入
replace(int start, int end, String str) 把start~end替换为str
reverse() 逆置

StringBuffer类

线程安全,效率低,与StringBuilter基本一样,他们都继承于抽象类AbstractStringBuilder。StringBuffer中的函数大部分是synchronize同步的,所以执行时会受其他线程的影响。效率会降低。
所以,如果程序用不到多线程,那么使用StringBuilder更高效。

你可能感兴趣的:(Java字符串(String_StringBuilder_StringBuffer))