1.StringBuffer类的概述
1.String 和 StringBuffer 的区别
String 是一个不可变字符序列
StringBuffer 是一个可变的字符序列
2.StringBuffer 类的构造方法
1.StringBuffer 的构造方法
public StringBuffer();无参构造方法
public StringBuffer(int capacity);指定容量的字符串缓冲区对象
public StringBuffer (String str);指定字符串内容的字符串缓冲区对象
2.StringBuffer 的方法
public int capacity ();返回当前容量
public int length();返回长度,也就是元素数量
1 public static void main(String[] args) { 2 StringBuffer s = new StringBuffer(); 3 //s.length()代表字符串缓冲区容器中的字符个数,实际值 4 System.out.println(s.length()); 5 //容器的初始容量,理论值 6 System.out.println(s.capacity()); 7 // 字符串缓冲区的容量也可以自己指定大小 8 StringBuffer s2 = new StringBuffer(10); 9 System.out.println(s2.length());//容器中的字符个数,实际值 10 System.out.println(s2.capacity());//容器的初始容量,理论值 11 12 StringBuffer s3 = new StringBuffer(); 13 for(int i=0;i<20;i++){ 14 s3.append(i); 15 } 16 System.out.println(s3.length());//容器中的字符个数,实际值 17 System.out.println(s3.capacity());//容器的初始容量,理论值 18 }
2.StringBuffer 的添加功能
1.StringBuffer的添加功能
添加后,内容还是StringBuffer本身,也就是一个类
public StringBuffer append(String str);可以把任意类型数据添加到字符串缓冲区里,并返回字符串缓冲区本身
public StringBuffer insert(int offset,String str);在指定位置把任意类型的数据插入到字符串缓冲去里面,并返回字符串缓冲区本身
2.StringBuffer的删除功能
public StringBuffer deleteCharAt(int index);删除指定位置的字符串,并返回本身
public StringBuffer delete(int start,int end);删除指定位开始指定位置结束的内容,并返回本身
1 /* 2 * A:StringBuffer的删除功能 3 * public StringBuffer deleteCharAt(int index): 4 * 删除指定位置的字符,并返回本身 5 * public StringBuffer delete(int start,int end): 6 * 删除从指定位置开始指定位置结束的内容,并返回本身 7 */ 8 public static void main(String[] args) { 9 StringBuffer s = new StringBuffer(); 10 //当缓冲区中这个索引上没有元素的时候就会报StringIndexOutOfBoundsException 11 s.append("实战Hadoop2.0从云计算到大数据"); 12 s.deleteCharAt(0);////根据索引删除掉索引位置上对应的字符 13 System.out.println(s); 14 s.delete(0, 3);//包含头,不包含尾 15 System.out.println(s); 16 }
3.StringBuffer 的替换和反转功能
StringBuffer 的替换功能
public StringBuffer replace(int start,int end,String str)从 start 开始,到 end 范围内的字符串用 str 替换
StringBuffer 的反转功能
public StringBuffer reverse();将字符串反转
1 StringBuffer sb = new StringBuffer("jinghang"); 2 sb.replace(0, 4, "hang"); 3 System.out.println(sb); //输出结果为 hanghang 4 5 sb.reverse(); 6 System.out.println(sb); //输出结果为 gnahgnah
4.StringBuffer 的截取功能及注意事项
StringBuffer的截取功能
public String subString(int start);从指定位置截取到末尾
public String subString (int start ,int end);截取从指定位置开始到位置开始到结束位置,包括开始位置,不包括结束位置
截取后返回值不再是 StringBuffer 本身,
1 StringBuffer sb = new StringBuffer("nihao"); 2 /*sb.substring(2); 3 * System.out.println(sb);//nihao注意:返回值类型不再是StringBuffer本身 4 */ 5 String str1 = sb.substring(2); 6 System.out.println(str1); 7 String str2 = sb.substring(2, 5);//截取从指定位置开始到结束位置,包括开始位置,不包括结束位置 8 System.out.println(str2);
5.String 和 StringBuffer 相互转换
String —— StringBuffer
通过构造方法
通过 addend()方法
StringBuffer —— String
通过构造方法
通过 toString()方法
通过subString(0,length);
StringBuffer 转换String
* a:通过构造方法 * b:通过toString()方法 * c:通过subString(0,length); */ StringBuffer s = new StringBuffer("jinghang"); String s1 = new String(s);//通过构造将StringBuffer转换为String System.out.println(s1); String s2 = s.toString();//通过toString方法将StringBuffer转换为String System.out.println(s2); //通过截取子字符串将StringBuffer转换为String String s3 = s.substring(0, s.length()-1); System.out.println(s3); }
String转化为StringBuffer
1 //通过构造方法将字符串转换为StringBuffer对象 2 StringBuffer s1 = new StringBuffer("jinghang"); 3 System.out.println(s1); 4 System.out.println("++++++++++++++++++"); 5 //通过append方法将字符串转换为StringBuffer对象 6 StringBuffer s2 = new StringBuffer(); 7 s2.append("jinghang"); 8 System.out.println(s2);
6.区别
StringBuffer 和 StringBuilder 的区别
StringBuffer 是jdk 1.0 版本的,是线程安全,效率低
StringBuilder 是jdk1.5版本的,线程不安全,但效率高
String 和 StringBuffer ,StringBuilder 的区别
String是一个不可变字符序列
StringBuffer StringBuilder是可变的字符序列
7.String 和 StringBuffer 分别作为参数传递
基本数据类型的值传递,不改变其值
引用数据类型的值传递,改变其值
String类虽然是引用数据类型,但是他当做参数传递时和基本数据类型是一样的
如果你想修改字符串的的值,应该用stringBuffer
1 public static void main(String[] args) { 2 3 String s = "21班你们"; 4 change(s); 5 System.out.println(s); //输出结果为 21班你们 6 7 System.out.println("++++++++++++++++++++"); 8 9 StringBuffer sb = new StringBuffer("21班你们"); 10 change(sb); 11 System.out.println(sb); //输出结果为 21班你们nihao 12 } 13 14 public static void change(String s) { 15 s += "nihao"; 16 } 17 public static void change(StringBuffer sb) { 18 sb.append("nihao"); 19 }