1、append 和 insert
StringBuffer sb = new StringBuffer();
//public StringBuffer append(String str)
//a.append(b) 在a后拼接b
StringBuffer stringBuffer = sb.append("hello");
System.out.println(stringBuffer);//hello
System.out.println(sb);//hello (sb被修改)
System.out.println(sb == stringBuffer);//true
//链式编程追加
sb.append(10).append('a').append(true).append(12.34);
System.out.println(sb);//hello10atrue12.34
System.out.println("===============================================");
//hello10atrue12.34
//public StringBuffer insert(int offset,String str)
// 将字符串插入到此字符序列中,从下标offset开始插入,返回的是字符串缓冲区本身
//String参数的String按顺序插入到指定偏移量的该序列中,向上移动原始位于该位置的任何字符,
// 并将该序列的长度增加到参数的长度。
sb.insert(5, "hadoop");
System.out.println(sb);//hellohadoop10atrue12.34
// 如果str是null ,则四个字符"null"被插入到该序列中。
// sb.insert(5,null);
Object o = null;
sb.insert(5, o);
System.out.println(sb);//hellonullhadoop10atrue12.34
2、deleteCharAt 和 delete
StringBuffer sb = new StringBuffer("bigdata");
System.out.println(sb);
// StringBuffer sb2 = sb.deleteCharAt(3); // 操作的是同一个StringBuffer对象
// System.out.println(sb);
// System.out.println(sb2);
// System.out.println(sb==sb2);
sb.deleteCharAt(3);
System.out.println( sb);//bigata
sb.delete(3,5);//[3,5)
System.out.println(sb);//biga
3、replace
//往StringBuffer中添加一些内容
sb.append("java").append("mysql").append("hadoop");
System.out.println(sb);//javamysqlhadoop
//public StringBuffer replace(int start,int end,String str)
sb.replace(5,10,"000");
System.out.println(sb);//javam000adoop
4、reverse
StringBuffer sb = new StringBuffer();
sb.append("我爱你中国");
System.out.println(sb);//我爱你中国
StringBuffer sb2 = sb.reverse(); // 操作的是同一个StringBuffer对象
System.out.println(sb);//国中你爱我
System.out.println(sb2);//国中你爱我
5、subString
StringBuffer sb = new StringBuffer();
sb.append("java").append("mysql").append("hive").append("ETL").append("spark");
System.out.println(sb);//javamysqlhiveETLspark
//public String substring(int start)
//不会改变原来StringBuffer中的数据
//返回值是一个String类型的数据
String s1 = sb.substring(4);
System.out.println(s1);//mysqlhiveETLspark
System.out.println(sb);//javamysqlhiveETLspark
//public String substring(int start,int end) 含头不含尾 [start,end)
//javamysqlhiveETLspark
String s2 = sb.substring(9, 13);//[9,13)
System.out.println(s2);//hive
System.out.println(sb);//javamysqlhiveETLspark
6、String与StringBuffer之间的转换
public class StringBufferDemo7 {
public static void main(String[] args) {
//String --> StringBuffer
String s = "hello";
// StringBuffer sb = s;
//java: 不兼容的类型: java.lang.String无法转换为java.lang.StringBuffer
// StringBuffer sb = "hello";
//方式1:通过构造方法转换
StringBuffer sb1 = new StringBuffer(s);
System.out.println(s);
System.out.println(sb1);
//方式2:通过append()
StringBuffer sb2 = new StringBuffer();
sb2.append(s);
System.out.println(s);
System.out.println(sb2);
System.out.println("==============================================");
//StringBuffer --> String
StringBuffer sb3 = new StringBuffer("bigdata");
//方式1:toString()方法
String s1 = sb3.toString();
System.out.println(sb3);
System.out.println(s1);
//方式2:subString
String s2 = sb3.substring(0);
System.out.println(s2);
System.out.println(sb3);
//方式3:String类的构造方法
//String(StringBuffer buffer)
//分配一个新的字符串,其中包含当前包含在字符串缓冲区参数中的字符序列。
String s3 = new String(sb3);
System.out.println(s3);
System.out.println(sb3);
}
}



