StringBuffer常用方法
【构造方法】
<1>StringBuffer();创建一个StringBuffer类对象,在底层char类型数组中初始化容量为16;并且未存储任何的数据;
<2>StringBuffer(String str);【最常见】根据用户传入参数String类型字符串,创建对应的StringBuffer对象,底层char类型数组保存对应的字符串信息;
<3>StringBuffer(int capacity);根据用户传入初始化底层char类型数组容量确定StringBuffer对象;
【添加方法】
<1>append(EveryThing); 在StringBuffer末尾追加内容,可以是【任意数据类型】;
<2>insert(int index,EvertThing);在StringBuffer 指定下标位置添加内容;可以是【任意数据类型】;
class Panda{
public static void main(String[] args) {
//创建一个StringBuffer对象 无参构造方法
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("小金");
//创建一个StringBuffer对象 构造方法参数->字符串
StringBuffer stringBuffer1 = new StringBuffer("hello:");
stringBuffer1.append("小花,");
stringBuffer1.append("小黄,");
stringBuffer1.append("小哈");
//在指定的下标位置插入字符串
stringBuffer1.insert(0,"1");
stringBuffer1.insert(3,"2");
//创建一个StringBuffer对象 构造方法参数->【底层char类型的数组容量】
StringBuffer stringBuffer2 = new StringBuffer(49);
}
}
【查看方法】
<1>String toString(); StringBuffer底层保存数据的char类型字符数组内容,转换为String类型返回;【也就是StringBuffer转换成String】
<2>int indexOf(String str);指定字符串在StringBuffer出现的第一次下标位置;
<3>int lastIndexOf(String str);指定字符串在StringBuffer中最后一次出现的下标位置;
<4>String substring(int begin); 从指定位置开始,到字符串末尾截取所得对应的字符串;
<5>String substring(int begin,int end); 从指定位置begin开始,到end结束,获取对应的字符串,【要头不要尾】【也就是substring(0,4);获取的是第一个字符串到下标为3的字符串】
class Panda{
public static void main(String[] args) {
//创建一个StringBuffer对象 【构造方法参数直接传入字符串】
StringBuffer stringBuffer = new StringBuffer("hello");
//toString() 方法将StringBuffer转化为String
String toString = stringBuffer.toString();
//指定字符串在StringBuffer中第一次出现的位置【找不到此字符串返回-1】
int indexOf = stringBuffer.indexOf("ll");
//指定字符串在StringBuffer中最后一次出现的下标位置【找不到此字符串返回-1】
int lastIndexOf = stringBuffer.lastIndexOf("ol");
//从指定位置开始,到字符串末尾截取获得对应的字符串
String substring = stringBuffer.substring(1);
//从指定位置begin开始,到字符串下标end前一个位置结束,截取获得对应字符串
String substring1 = stringBuffer.substring(1,3);
}
}
【删除和反序方法】
<1>delete(int start,int end); 删除从start开始,到end结束区间的所有内容,【要头不要尾】;
<2>deleteCharAt(int index); 删除指定下标的字符;
<3>reverse(); StringBuffer 内容反序;
class Panda{
public static void main(String[] args) {
//创建一个StringBuffer对象 【构造方法参数直接传入字符串】
StringBuffer stringBuffer = new StringBuffer("hello");
//删除从start开始到end结束区间的所有内容要头不要尾
stringBuffer.delete(3,5);
//删除指定下标位置字符
stringBuffer.deleteCharAt(1);
//StringBuffer内容反序
stringBuffer.reverse();
}
}
StringBuffer与StringBuilder的关系
【线程与效率】
<1>StringBuffer 线程安全,效率低;
<2>StringBuilder 线程不安全,效率高;
StringBuffer和StringBuilder操作使用的方法,是一致的,只不过StringBuffer的方法带有大量的同步问题,效率比较低;