StringBuffer类的成员方法
程序示例
/*
StringBuffer:
添加功能
public StringBuffer append(String str)
观察API发现,不光可以追加字符串类型,可以将任意数据类型添加到
字符串缓冲区中,返回的是什么呢?返回的是字符串缓冲区本身
public StringBuffer insert(int offset,String str)
将字符串插入到此字符序列中。返回的是字符串缓冲区本身
String参数的String按顺序插入到指定偏移量的该序列中,
向上移动原始位于该位置的任何字符,并将该序列的长度增加到参数的长
如果str是null ,则四个字符"null"被插入到该序列中。
*/
public class StringBufferDemo2 {
public static void main(String[] args) {
//创建一个StringBuffer对象
StringBuffer sb = new StringBuffer();
System.out.println("**************************************");
//public StringBuffer append(String str)
StringBuffer stringBuffer = sb.append("hello");
System.out.println(stringBuffer);//hello
System.out.println(sb);//hello
//比较两者的地址值
System.out.println(stringBuffer==sb);//true
//所以返回的是字符串缓冲区本身
// sb.append(10);
// sb.append('a');
// sb.append(true);
// sb.append(12.34);
// System.out.println(sb); //hello10atrue12.34
//无论插入的是什么类型,在字符串缓冲区中都转换为了字符类型进行拼接
// System.out.println(stringBuffer); //hello10atrue12.34
//链式编程
sb.append(10).append('a').append(true).append(12.34);
System.out.println(sb);//hello10atrue12.34
System.out.println("**************************************");
//public StringBuffer insert(int index,String str)
//将字符串插入到此字符序列中。返回的是字符串缓冲区本身
//String参数的String按顺序插入到指定偏移量的该序列中,
//向上移动原始位于该位置的任何字符,并将该序列的长度增加到参数的长
//如果str是null ,则四个字符"null"被插入到该序列中。
//现在我想在o和1之间插入一个hadoop
sb.insert(4,"hadoop");
System.out.println(sb);//hellhadoopo10atrue12.34
//那个位置的字符变了,就从哪里插入。
sb.insert(5,"hadoop");
System.out.println(sb);//hellohadoop10atrue12.34
//无论插入的是什么类型,在字符串缓冲区中都转换为了字符类型进行拼接
Object s = null;
sb.insert(5,s);
System.out.println(sb);//hellonullhadoop10atrue12.34
}
}
/*
日后开发中常见的删除:remove,move,delete,drop,truncate(后三个数据库中常见)
StringBuffer:
删除功能
public StringBuffer deleteCharAt(int index)
删除char在这个序列中的指定位置。 该序列缩短了一个char 。
public StringBuffer delete(int start,int end) [start,end)
删除此序列的子字符串中的字符。
子串开始于指定start并延伸到字符索引end - 1 ,
或如果没有这样的字符存在的序列的结束。
如果start等于end ,则不作任何更改。
*/
public class StringBufferDemo3 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("bigdata");
// public StringBuffer deleteCharAt(int index)
// 删除char在这个序列中的指定位置。 该序列缩短了一个char 。
sb.deleteCharAt(3);
System.out.println("未删除字符之前:"+sb);//bigdata
// 返回的是字符串缓冲区本身
System.out.println("删除字符之后:"+sb);//bigata
// 如果 index为负数或大于或等于 length() ,报错
// sb.deleteCharAt(15);
System.out.println("***********************************************");
//public StringBuffer delete(int start,int end) [start,end)
//删除此序列的子字符串中的字符。
// 子串开始于指定start并延伸到字符索引end - 1 ,
// 或如果没有这样的字符存在的序列的结束。
// 如果start等于end ,则不作任何更改。
// sb.delete(2,5);//bia
// sb.delete(2,6);//bi
// System.out.println(sb);
//删除所有的字符
sb.delete(0,sb.length());
System.out.println("删除所有的字符sb: "+sb);
}
}
/*
StringBuffer替换功能:
public StringBuffer replace(int start,int end,String str)
用指定的String中的字符替换此序列的子字符串中的String 。
子串开始于指定start并延伸到字符索引end - 1 ,
或如果没有这样的字符存在的序列的结束。
第一子串中的字符被去除,然后指定String被插入在start 。
*/
public class StringBufferDemo4 {
public static void main(String[] args) {
//创建一个StringBuffer对象
StringBuffer sb = new StringBuffer();
//往StringBuffer中添加内容
sb.append("hello").append("world").append("mysql").append("hadoop").append("hive");
System.out.println(sb);//helloworldmysqlhadoophive
System.out.println("******************************************************************");
//public StringBuffer replace(int start,int end,String str)
//含头不含尾 ---- [start,end)
sb.replace(5,10,"好好学习,天天向上");
System.out.println(sb);
}
}
/*
StringBuffer:
反转功能
public StringBuffer reverse()
导致该字符序列被序列的相反代替。
如果序列中包含任何替代对,则将它们视为单个字符进行反向操作
*/
public class StringBufferDemo5 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("好好学习");
System.out.println("反转前:");
System.out.println(sb);//好好学习
System.out.println("反转后:");
StringBuffer reverse = sb.reverse();
System.out.println(sb);//习学好好
System.out.println(reverse);//习学好好
}
}
/*
StringBuffer:
截取功能
String substring(int start)
返回一个新的 String ,其中包含此字符序列中当前包含的字符的子序列。
String substring(int start, int end)
返回一个新的 String ,其中包含此序列中当前包含的字符的子序列。
*/
public class StringBufferDemo6 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("java")
.append("hadoop")
.append("hive")
.append("ETL")
.append("spark")
.append("flink");
System.out.println(sb);//javahadoophiveETLsparkflink
//String substring(int start)
//哪个字符开始变化start就取那个字符的下标索引
String s1 = sb.substring(4);
System.out.println("截取出来的字符串是:" + s1);//hadoophiveETLsparkflink
System.out.println("StringBuffer的内容为:" + sb);//javahadoophiveETLsparkflink
//做截取操作之后,原先的sb并没有变化,就相当于截取了一个String类型的副本出来
System.out.println("**********************************************************************");
//String substring(int start, int end) 含头不含尾的 [start,end)
String s2 = sb.substring(10, 17);
System.out.println("截取出来的字符串是:" + s2);//hiveETL
System.out.println("StringBuffer的内容为:" + sb);//javahadoophiveETLsparkflink
}
}