StringBuffer类的构造方法和length·capacity方法
package com.heima.stringbuffer;
public class Demo1_StringBuffer {
/*
* StringBuffer类的构造方法
* public StringBuffer()无参构造方法
* public StringBNuffer(int capacity)指定容量的字符串缓冲区对象
* public StringBUffer(Stirng Str)指定字符串内容的字符串缓冲区对象
* StringBUffer的方法
* public int capacity()返回当前容量 理论值(理论值)
* public int length() 返回当前长度 实际值
* 案例演示
* 构造方法和长度方法的使用
* */
public static void main(String[] args) {
StringBuffer sb=new StringBuffer();
System.out.println(sb.length()); //结果是0,但是根据api上说,应该有16个处室容量,那么从哪里可以看出来呢
System.out.println(sb.capacity()); //结果是16,length是长度。length是实际值(字符串个数),capacity是理论值
StringBuffer sb2=new StringBuffer(10);
System.out.println(sb2.length());
System.out.println(sb2.capacity());//length还是0,因为没有字符串,而capacity是10,因为初始化10个容量
StringBuffer sb3=new StringBuffer("heima");
System.out.println(sb3.length());
System.out.println(sb3.capacity());//length是5,capacity是21.capacity的值是字符串的length加上初始容量
}
}
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
StringBuffer类的append方法和insert方法
package com.heima.stringbuffer;
public class Demo2_StringBuffer {
/*
* StringBuffer的添加功能
* public StringBuffer append(String str)把任意类型数据添加到字符串缓冲区里,并返回字符串缓冲区本身,
* 这是一个重载的方法,所有数据类型都可以添加
* public StringBuffer insert(int offset,String str)在指定位置把任意类型数据添加到字符串缓冲区里,并返回字符串缓冲区本身
* 这是一个重载的方法,所有数据类型都可以添加
* */
public static void main(String[] args) {
demo1();//append方法的demo
demo2();//insert方法的demo
}
private static void demo2() {
// StringBuffer sb=new StringBuffer();
// sb.insert(3, "heima");
// System.out.println(sb);//出现了字符串索引越界异常,因为并没有3这个索引
StringBuffer sb=new StringBuffer("1234");
sb.insert(3, "heima"); //这就是在指定位置添加,如果没有在指定位置的索引,就会报索引越界异常
System.out.println(sb);//结果是123heima4
}
private static void demo1() {
StringBuffer sb=new StringBuffer();
//System.out.println(sb);//控制台没有结果,实际上这个语句相当于以下
System.out.println(sb.toString());//因为控制台是空的 ,所以StringBUffer一定是重写了toString方法
StringBuffer sb2=sb.append(true);
StringBuffer sb3=sb.append("heima");
StringBuffer sb4=sb.append(100);
System.out.println(sb.toString());
System.out.println(sb2.toString());//String Buffer类中重写了toSting方法,显示的是对象中的属性值
System.out.println(sb3.toString());
System.out.println(sb4.toString());
/*
* 以上的输出的结果都是trueheima100,为什么?
* 因为四个引用指向同一个对象
* StringBuffer是字符串缓冲区,在new的时候在对内存创建了一个对象,底层是一个长度为16的对象
* 当调用方法时,不会创建新的对象,只会不断在原来缓冲区添加字符
* */
}
}
StringBuffer的删除功能
package com.heima.stringbuffer;
/*
* StringBuffer的删除功能
* public StringBuffer deleteChartAt(int index)
* 删除指定位置字符,并返回本身
* public StringBuffer delete(int start,int end)
* 删除开始位置到结束位置内容,并返回本身
* */
public class demo_StringBufferDelate {
public static void main(String[] args) {
// StringBuffer sb=new StringBuffer();
// sb.deleteCharAt(5); //5索引上没有元素,出现索引越界异常
StringBuffer sb=new StringBuffer();
sb.append("heima");
sb.deleteCharAt(4);
System.out.println(sb);//删除索引4处的a
sb.append("jjjjjjjj");
System.out.println(sb);
sb.delete(0,2);
System.out.println(sb);//删除的时候是包含头不包含尾
//清空缓冲区
sb.delete(0,sb.length());
System.out.println(sb+"0000");
sb=new StringBuffer();//不要用这种方式清空缓冲区,原来的会变成垃圾,浪费内存
}
}
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
StringBuffer的替换和反转
package com.heima.stringbuffer;
public class demo4_StringBuffer {
/*
* StrngBuffer的替换功能
* public StringBuffer replace(int start,int end,String str)
* 从start开始到end结束用str替换
* StringBuffer的反转功能
* public StringBuffer reverse();
* 字符串反转
* */
public static void main(String[] args) {
StringBuffer sb=new StringBuffer("heima");
sb.replace(0, 3, "baidd");
System.out.println(sb);
sb.reverse();
System.out.println(sb);
}
}
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
StringBuffer的截取功能和注意事项
package com.heima.stringbuffer;
public class Demo5_StringBuffer {
/*
* StringBuffer的截取功能
* public String substring(int start)
* 从指定位置截取到末尾。
* public String substring(int start,int end)
* 指定截取的开始和结束为止,不包括结束位置
* 注意事项
* 返回值类型不再是StringBuffer本身
* */
public static void main(String[] args) {
StringBuffer sb=new StringBuffer("woaiheima");
String str=sb.substring(1);
System.out.println(str);
System.out.println(sb);//sb的值没有改变
}
}
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
StringBuffer和String的相互转换
package com.heima.stringbuffer;
/*
* String转换成StringBuffer
* 1.通过构造方法
* 2.通过append方法
* StringBuffer转换成String、
* 1.通过构造方法
* 2.通过tostring方法
* 3.通过substring(0,length)
* */
public class demo6_StringBuffer {
public static void main(String[] args){
string转换成StringBuffer();
stringbuffer转换成string();
}
private static void stringbuffer转换成string() {
StringBuffer sb=new StringBuffer("heima");
String s1=new String(sb);
System.out.println(s1+sb);
String s3=sb.substring(0, sb.length());
System.out.println(s3);
}
private static void string转换成StringBuffer() {
StringBuffer sb1=new StringBuffer("heima");//这是通过构造方法转换,将字符串转换成StringBuffer对象
System.out.println(sb1);
StringBuffer sb2=new StringBuffer();
sb2.append(true);
System.out.println(sb2); //通过append方法将字符串转换成StringBUffer对象
}
}
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
把数组转换成字符串
package com.heima.test;
public abstract class Test_shuzuzhuanhuan {
//把数组中的数据按照指定格式拼接成字符串
public static void main(String[] args) {
int[] arr={1,2,3};
System.out.println(arrayToString(arr));
}
public static String arrayToString(int[] arr){
StringBuffer sb=new StringBuffer();//创建字符串缓冲区对象
sb.append('['); //将【添加到缓冲区
for(int i=0;i<arr.length-1;i++){
sb.append(arr[i]);
sb.append(',');
}
sb.append(arr[arr.length-1]);
sb.append(']');
return sb.toString();
}
}
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
字符串反转(不抽取方法)
package com.heima.test;
public abstract class Test_shuzuzhuanhuan {
//把数组中的数据按照指定格式拼接成字符串
public static void main(String[] args) {
int[] arr={1,2,3};
System.out.println(arrayToString(arr));
}
public static String arrayToString(int[] arr){
StringBuffer sb=new StringBuffer();//创建字符串缓冲区对象
sb.append('['); //将【添加到缓冲区
for(int i=0;i<arr.length-1;i++){
sb.append(arr[i]);
sb.append(',');
}
sb.append(arr[arr.length-1]);
sb.append(']');
return sb.toString();
}
}