StringBuilder的介绍
由于String的不可更改的特性,为了方便字符串的修改,Java中又提供了StringBuilder和StringBuffer类。这两个类大部分功能是相同的,我来介绍一下StringBulider常用的一些方法。如果想要查询其它的方法,可以查询API。
方法 | 说明 |
StringBuffer append(String str) | 在尾部追加,相当于String的+=,可以追加:boolean, char, char[], double, float, int, long, Object, String, StringBuff的变量 |
char charAt(int index) | 获取index位置的字符 |
int length() | 获取字符串的长度 |
int capacity() | 获取底层保存字符串空间总的大小 |
void ensureCapacity(int mininmumCapacity)参数: 该方法将所需最小容量作为参数 |
扩容 |
void setCharAt(int index, char ch) | 将index位置的字符设置为ch |
int indexOf(String str) | 返回str第一次出现的位置 |
int indexOf(String str, int fromIndex) | 从fromIndex位置开始查找str第一次出现的位置 |
int lastIndexOf(String str) | 返回最后一次出现str的位置 |
int lastIndexOf(String str, int fromIndex) | 从fromIndex位置开始寻找str最后出现的位置 |
StringBuffer insert(int offset, String str) | 在offset的位置插入:八种基类类型&String类型&Object类型数据 |
StringBuffer deleteCharAt(int index) | 删除index位置的字符 |
StringBuffer delete(int start, int end) | 删除[start, end)之间的字符 |
StringBuffer replace(int start, int end, String str) | 将[start, end)之间的字符置换为str |
String substring(int start) | 从start开始一直到末尾的字符以String的方式返回 |
String substring(int start, int end) | 将[start, end)范围内的字符以String的方式返回 |
StringBuffer reverse() | 反转字符串 |
String toString() | 将所有的字符按照String的方式返回 |
下面举一个长点的例子来介绍一下部分方法:
public static void main(String[] args) {
StringBuilder sb1 = new StringBuilder("hello");
StringBuilder sb2 = sb1;
//追加:即尾插->字符,字符串,整型数字
sb1.append(' '); //hello
sb1.append("world"); //hello world
sb1.append(123); //hello world123
System.out.println(sb1);
System.out.println(sb1 == sb2);//true
System.out.println(sb1.charAt(0));//获得0字号位上的字符h
System.out.println(sb1.length());//获取字符串的有效长度:14
System.out.println(sb1.capacity());//获得底层数组的总大小
sb1.setCharAt(0, 'H');//设置任意位置上的字符Hello world123
sb1.insert(0, "Hello world!!!");//Hello world!!!Hello world123
System.out.println(sb1);
System.out.println(sb1.indexOf("Hello"));//获得Hello第一次出现的位置:0
System.out.println(sb1.lastIndexOf("Hello"));//获得Hello最后一次出现的位置:14
sb1.deleteCharAt(0);//删除首字符
sb1.delete(0, 5);//删除[0,5)之间的字符
String str = sb1.substring(0, 5);//截取[0,5)区间中的字符并以String类型返回
System.out.println(str);
sb1.reverse();//字符串逆转
str = sb1.toString();//将StringBuffer的方式返回
System.out.println(str);
}
从上述例子可以看出:String和StringBuilder最大的区别在于String的内容无法修改,而StringBuilder内容可以修改。频繁使用字符串的情况下考虑使用StringBuilder.
注:String和StringBuilder类不能直接转换。如果想要互相转换,可以采用以下原则:
1.String变为StringBuilder:利用StringBuilder的构造方法或者append()方法
2.StringBuilder变为String:调用toString()方法
常见问题
1.String,StringBuffer,StringBuilder之间的区别:
(1)String的内容不可修改,StringBuffer和StringBuilder的内容可以修改
(2)StringBuffer和StringBuilder的大部分功能是相似的
(3)StringBuffer采用同步处理,属于线程安全操作(StringBuffer前面有synchronized关键字以保证线程安全);而StringBuilder未采用同步处理,属于线程不安全操作
(4)StringBuffer性能较差,StringBuilder性能较好文章来源:https://www.toymoban.com/news/detail-697228.html
2.文章来源地址https://www.toymoban.com/news/detail-697228.html
到了这里,关于Java String类(3):StringBulider和StringBuffer详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!