import com.sun.jndi.url.dns.dnsURLContext;
/*StringBuffer类,叫做字符串的缓冲区,什么意思呢? String类定义的字符串一旦定义了不能再进行修改
- 而StringBuffer类定义的字符串可以进行增删查改!!
- StringBuffer类的方法
- 增加字符串:
- StringBuffer append(char类型,String类型,int类型,boolean类型等等); 注意调用append方法加入的字符串是在原字符串末尾进行添加的
- 删除字符串:
- StringBuffer delete(int start,int end);删除哪一段的字符串
- Stringbuffer deleteCharAt(int index);删除指定位置的字符串
- StringBuffer delete(0,str.length());清空缓冲区,也就是删除全部的字符串
- 查找字符:
- char charAt(int index);查找指定位置的字符
- int indexOf(char ch或者Strin str);查找指定的字符在什么位置,查找指定的字符串在什么位子
- 修改字符串:
- void setCharAt(int index,char ch);修改指定位置的字符
- StringBuffer replace(int start,int end,String str);替换某一段的字符串
- 插入字符串:
- StringBuffer insert(int index,char或者String或者等等);在指定的位子插入字符或者字符串等等
- 翻转字符串:
- StringBuffer reverse();
- 以上列出的都不是全部,只是一部分!!!!!
- */
public class StringBufferDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
练习
//问题 : 将int[]数组变成字符串
/*注意:
-
StringBuffer和StringBuilder是一样的,它们具有一样的功能一样的方法
-
区别:
-
StringBuffer线程同步,更安全,但是效率比它慢
-
StringBuilder线程不同步,不安全,效率更快
-
最好使用地方:
-
多线程使用StringBuffer
-
单线程使用StringBuilder
-
*/
public class StringBufferTest1 {public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[]{1,2,3,4,5};
System.out.println(arrayText(arr));
System.out.println( arrayTest2(arr));
}public static String arrayText(int[] arr) {//方法1
// TODO Auto-generated method stub
StringBuilder sb =new StringBuilder();//创建一个数组容器
sb.append("[");
for (int i = 0; i < arr.length; i++) {//将数组遍历一遍
if(i != arr.length-1){
sb.append(arr[i]+",");//每产生一个值就往字符串的尾部后面添加
}
else
sb.append(arr[i]+"]");
}
return sb.toString();//为什么返回sb。toString()?
//因为返回值类型是String类型,而sb是StringBuilder类型,但是调用了toString方法后,返回的就是字符串了!
}//两种方法的效果是一样的,但是:这种方法不好,不是首选的
public static String arrayTest2(int[] arr){//方法2
String s = “[”;
for (int i = 0; i < arr.length; i++) {//每一次循环都在常量池中生成了新的字符串,十分浪费空间,而方法1至始至终都是一个容器在改变,最后返还了一个字符串。
if(i != arr.length-1)
s += arr[i]+",";//在常量池中生成新的字符串
else
s += arr[i]+"]";//在常量池中生成新的字符串
}
return s;
}
}