StringBuffer

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;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值