Java StringBuffer 和 StringBuilder 类

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。 

public class Test{
  public static void main(String args[]){
    StringBuffer sBuffer = new StringBuffer("菜鸟教程官网:");
    sBuffer.append("www");
    sBuffer.append(".runoob");
    sBuffer.append(".com");
    System.out.println(sBuffer);  
  }
}

输出结果 :菜鸟教程官网:www.runoob.com

StringBuffer类的主要方法:

1. append(String s) 将指定的字段追加到此字符的序列

2.  reverse() 将此字段序列反转

3. delete(int Start,int end)  移除此序列的子字符串中的字符。

4. replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符.

Java 中 StringBuffer 和 String 是有一定的区别的,首先,String 是被 final 修饰的,他的长度是不可变的,就算调用 String 的 concat 方法,那也是把字符串拼接起来并重新创建一个对象,把拼接后的 String 的值赋给新创建的对象,而 StringBuffer 的长度是可变的,调用StringBuffer 的 append 方法,来改变 StringBuffer 的长度,并且,相比较于 StringBuffer,String 一旦发生长度变化,是非常耗费内存的!

JAVA 中的 StringBuilder 和 StringBuffer 适用的场景是什么?

1.StringBuilder非线程安全(单线程使用),String与StringBuffer线程安全(多线程使用).

2.如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。

3.StringBuffer字符串变量(线程安全)是一个容器,最终会通过toString方法变成字符串;

4.StringBuilder 字符串变量(非线程安全)。

总结

(1)如果要操作少量的数据用 String; 
(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer; 
(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。

 

posted @ 2018-11-16 10:54  时间绝境  阅读(204)  评论(0编辑  收藏  举报