黑马程序员 字符串缓冲区小结

来源:互联网 发布:淘宝售后客服在哪里 编辑:程序博客网 时间:2024/06/06 13:49

------- android培训、java培训、期待与您交流! --------------------------------

1.字符串缓冲区对象Stringbuffer和StringBuilder
1.1为什么要学习和使用缓冲区对象
缓冲区:是为了提高程序的效率
String类,效率比较低
    StringBuffer效率比较高
String类是一个不变对象,一旦初始化就不会变化
主要表现在内存中
例如:String s1 = "abc";
String s2 = "def";
String s3 = s1+s2;
s3 = "abcdef";
运算结束后,内存中有三个对象"abc","def","abcdef"
而 StringBuffers1 = "abc";
StringBuffers2 = "def";
StringBuffers3 = s1+s2;
s3 = "abcdef";
运算结束后,在内存中只有剩下一个对象"abcdef"
StringBuffer
    线程安全的可变字符序列。
    字符序列--字符串缓冲区底层数据结构,是可变数组,赋值方式


来实现
    数组扩容,复制数组,并删除原数组
频繁操作字符串,建立采用StringBuffer缓冲区对象
    1.2   StringBuffer的常用方法


  1.2.1 构造方法
    空参数的StringBuffer() ,自动创建一个16位的数组
    带有一个字符串参数的StringBuffer(String str) 
    传递一个字符串,字符串就被直接放进了缓冲区


1.2.2 将任意类型数据,追加到缓冲区
  任意类型,变成字符串
  方法是append(任意类型) 结果都会是字符串
  向缓冲区中,追加字符串
  append()方法,返回值是StringBuffer
  运行结果还是缓冲区对象
  append(){
     return this;
  }
如StringBuffer  buffer= new StringBuffer();
buffer.append("12.35");
    1.2.3 删除缓冲区中的数据
    delete(int start, int end)删除缓存区中一部分字符串,包含


头,不包含尾
  1.2.4 在缓冲区的指定位置上,插入数据
    insert(下标int ,任意类型数据)
注意:下标int可以等于原字符串缓冲区的长度,但不能大于


  1.2.5 改,修改缓冲区中的内容
    setCharAt(索引,修改的char值)


    1.2.6翻转缓冲区中的字符
   reverse() 返回值StringBuffer
其实可以理解为将字符数组中元素翻转
1.3  StringBuilder
  StringBuilder也是一个字符串缓冲区
  StringBuilder和StringBuffer在方法上,和使用上一模一样,没有


区别


  区别在哪里
    StringBuffer 版本开始JDK1.0
    StringBuilder 版本开始JDK1.5


    StringBuffer是一个线程安全的对象
    StringBuilder是一个线程不安全对象


    日后开发推荐使用StringBuilder,执行效率跟快
    凡是线程安全的,运行效率都低
    线程不安全的,运行效率都高

  ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- 详细请查看:www.itheima.com

0 0
原创粉丝点击