美文网首页
Java中String和stringBuffer之间的区别

Java中String和stringBuffer之间的区别

作者: 刘岳森 | 来源:发表于2017-10-23 17:41 被阅读7次

    String

    特点

    • String每次在改变的时候其实在内存当中的实现方式是新建一片内存来储存新的字符串然后把内存地址指向这个新的区域。
    • 在某些特别情况下, String 对象的字符串拼接其实是被 JVM 解释成了 StringBuffer 对象的拼接,所以这些时候 String 对象的速度并不会比 StringBuffer 对象慢,而特别是以下的字符串对象生成中, String 效率是远要比 StringBuffer 快的:
      String S1 = “This is only a” + “ simple” + “ test”;

    StringBuffer

    特点

    • 擅长增删操作
    • 线程安全

    常见用法

    • 赋值:
    string s = "abc";
    StringBuffer stringBuffer = "abc";//这是错误的
    StringBuffer stringBuffer = new StringBUffer("abc");//新建一个Stringbuffer对象
    StringBuffer string = new StringBuffer(s);//把string转化成stringbuffer对象
    
    • append方法:追加内容到当前StringBuffer对象的末尾
    • deleteCharAt方法:删除指定位置的字符
    • insert :插入
    • reverse:将内容反转
    • setCharAt:
    存储

    StringBuffer append(基本数据类型); //将指定数据作为参数添加到已有数据结尾处.。StringBuffer insert(int index,基本数据类型); //可以将数据插入到指定index位置。

    删除
    StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。StringBuffer deleteCharAt(index):删除指定位置的字符。

    获取
    char charAt(int index); int indexOf(String str); int lastIndexOf(String str);int length(); String substring(int start, int end);

    修改
    StringBuffer replace(int start,int end,String str);void setCharAt(int index, char ch);

    反转
    StringBuffer reverse();

    其他
    //将缓冲区中指定数据存储到指定字符数组中。void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) StringBuffer sb = new StringBuffer("abcedf");char[] chs = new char[4];sb.getChars(1,4,chs,1);

    StringBuilder

    特点

    • 线程不安全,他是设计出来在单线程当中替换stringBUffer的,她是StringBuffer的单线程等价类

    相关文章

      网友评论

          本文标题:Java中String和stringBuffer之间的区别

          本文链接:https://www.haomeiwen.com/subject/xhmauxtx.html