Java基础3-String、StringBuilder和StringBuffer类
String底层char[]数组用final修饰,不可变。
StringBuilder底层char[]数组没有用final修饰,可变;线程不安全,效率高(一般用的多)
StringBuffer底层长度为16的char[]数组没有用final修饰,可变;线程安全,效率低(一般用得少)
扩容问题:如果要添加的数据底层数组盛不下了,那就需要扩容底层数组。默认情况下啊,扩容为原来的2倍 + 2,同时将原有的数组中的元素复制到新数组
方法都采用了synchronized
三者的执行效率:StringBuilder > StringBuffer > String
String类常用方法
| valueOf(基础数据类型 b) | 将基础类型数据的文本转换为字符串 |
| substring(int beginIndex, int endIndex) | 切割范围为[beginIndex, endindex) |
| replace(char oldChar, char newChar) | 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 |
| trim() | 返回字符串的副本,忽略前导空白和尾部空白。 |
| toLowerCase() | 将此 String 中的所有字符都转换为小写。 |
| toUpperCase() | 将此 String 中的所有字符都转换为大写。 |
| charAt(int index) | 获取指定索引处的 char 值。没有则为null |
| contains(CharSequence s) | 判断字符串是否包含指定的 char 值,有则返回 true。 |
| equals(Object anObject) | 将此字符串与指定的对象比较。 |
| endsWith(String suffix) | 判断此字符串是否以指定的后缀结束。 |
| startsWith(String prefix) | 判断此字符串是否以指定的前缀开始。 |
| toCharArray() | 将此字符串转换为一个新的字符数组。 |
| matches(String regex) | 判断此字符串是否匹配给定的正则表达式。 |
| replaceAll(String regex, String replacement) | 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 |
| replaceFirst(String regex, String replacement) | 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。 |
| split(String regex) | 根据给定正则表达式的匹配拆分此字符串。 |
| getBytes() | 得到一个操作系统默认的编码格式的字节数组 |
StringBuffer类常用方法
| StringBuffer(String str) | 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。 |
| append(基础类型数据 b) | 将 基础类型的字符串表示形式追加到序列后面。 |
| charAt(int index) | 返回此序列中指定索引处的 char 值。 |
| delete(int start, int end) | 移除此序列的子字符串中的字符。[start, end) |
| deleteCharAt(int index) | 移除此序列指定位置的 char。 |
| insert(int offset, 基础类型数据 b) | 将 基础类型参数的字符串表示形式插入指定位置中。 |
| toString() | 返回此序列中数据的字符串表示形式。 |
| setCharAt(int index, char ch) | 改变index位置的字符 |
String str1 = "str";
String str2 = "ing";
String str3 = "str" + "ing";
String str4 = str1 + str2;
String str5 = "string";
System.out.println(str3 == str4);
System.out.println(str3 == str5);
System.out.println(str4 == str5);
final String str1 = "str";
final String str2 = "ing";
// 下面两个表达式其实是等价的
String c = "str" + "ing";String d = str1 + str2; // 常量池中的对象
System.out.println(c == d);
有final修饰,相当于常量

浙公网安备 33010602011771号