StringBuffer

导读:本篇文章讲解 StringBuffer,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

StringBuffer

1.概述

String 不可变(private final char value[])
StirngBuffer 可变(char[] value) 安全 多线程操作字符串
StringBuilder(Java5) 可变(char[] value) 不安全(不能同步访问) 单线程操作字符串
  • 使用String对字符串修改时,会返回新的字符串对象,在内存中会留下副本,若放在循环中,会大大降低程序效率这时,就可以使用StringBuffer与Stringbuilder

  • StringBuilder较于StringBuffer有速度优势,多数情况推荐使用StringBuilder

  • 当程序要求线程安全时,使用StringBuffer,适用多线程下在字符缓冲区进行大量操作的情况

2.示例

 		StringBuffer s1 = new StringBuffer(5);
        /*
        public StringBuffer(int capacity) {
            super(capacity);
        }
        value = new char[capacity];

         */

        StringBuffer s2 = new StringBuffer();
        /*
        public StringBuffer() {
            super(16);
        }
         */

        //添加
        //append():    return this;  改变的是value数组,不创建新对象
        s1.append("abcde");
        s1.append("12345");
        s1.append("abcde");
        s1.append("12345");
        s1.append("abcde");
        System.out.println("append:"+s1);

        //insert():        return this;
        s2.insert(0,"hello word");
        System.out.println("insert:"+s2);

        //删除    return this;
        s1.delete(5,10);//删除指定区间的字符串:start(包括),end(不包括)
        //s2.deleteCharAt(0);//删除指定位置的字符
        System.out.println("delete:"+s1);

        //替换
        // return this;
        s1.replace(0,5,"hello");
        System.out.println("replace:"+s1);

        //反转字符串
        s2.reverse();
        System.out.println("reverse;"+s2);

		/*
		输出:
		append:abcde12345abcde12345abcde
        insert:hello word
        delete:abcdeabcde12345abcde
        replace:helloabcde12345abcde
        reverse;drow olleh
		*/
  • StringBuffer与StringBuilder的操作方法完全相同.

  • StringBuffer与StringBuilder继承了同一个父类,实现了相同的接口

  • StringBuffer添加了synchronized同步锁,多线程安全,StringBuilder没有synchronized同步锁

/*	StringBuffer

	public final class StringBuffer
    extends AbstractStringBuilder
    implements java.io.Serializable, CharSequence
*/
/*	StringBuilder

	public final class StringBuilder
    extends AbstractStringBuilder
    implements java.io.Serializable, CharSequence
*/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/15646.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!