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修饰,相当于常量
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)