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修饰,相当于常量

posted @   草莓小甜心  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示