StringBuffer & StringBuilder

java.lang.StringBuffer:

                       ①代表可变的字符序列,可以对字符串内容进行增删。
                       ②很多方法与String相同,但StingBuffer是可变长度的。
                       ③StringBuffer是一个容器。

StringBuffer类有三个构造方法:
                       ①StringBuffer()初始容量为16的字符串缓冲区
                       ②StringBuffer(int size)构造指定容量的字符串缓冲区
                       ③StringBuffer(String str)将内容初始化为指定字符串内容

 java.lang.StringBuilder:可变字符序列,是jdk5.0加入的,线程不安全,效率要高于StringBuffer

对比String,StringBuffer,StringBuilder的三者在添加上的效率
效率从低到高:String<StringBuffer<StringBuilder

TestStringBuffer

package com.ff.string;

import org.junit.Test;

/*
 * java.lang.StringBuffer:代表可变字符序列,可以对字符串内容进行增删
 * 
 * 
StringBuffer append(String s),   StringBuffer append(int n) ,  
StringBuffer append(Object o) ,  StringBuffer append(char n),
StringBuffer append(long n),  StringBuffer append(boolean n),
StringBuffer insert(int index, String str) 
public StringBuffer reverse() : 反转此StringBuffer
StringBuffer delete(int startIndex, int endIndex) 
public char charAt(int n )
public void setCharAt(int n ,char ch)
StringBuffer replace( int startIndex ,int endIndex, String str) 
public int indexOf(String str)
public String substring(int start,int end)
public int length()

 总结:      添加:  append()
           删除:  delete(int startIndex, int endIndex)
           插入:  insert(int index,String str)
           反转:  reverse()      本身也变了,所以不用拿新的来接收了  
           查:   charAt(int n )
           修改:  setCharAt(int n ,char ch)
           长度:  length()
 */

//* java.lang.StringBuilder:可变字符序列,是jdk5.0加入的,线程不安全,效率要高于StringBuffer

public class TestStringBuffer {
    @Test
    public void test1() {
        StringBuffer sb = new StringBuffer();
        System.out.println(sb.length());
        sb.append("abc").append("1234").append(true);
        System.out.println(sb);
        //ArrayList list = new ArrayList();
    }
    
    
    
    //对比String,StringBuffer,StringBuilder的三者在添加上的效率
    //效率从低到高:String<StringBuffer<StringBuilder
    @Test
    public void test2() {
        String text = "";
        long startTime = 0L;
        long endTime = 0L;
        StringBuffer buffer = new StringBuffer("");
        StringBuilder builder = new StringBuilder("");
        startTime = System.currentTimeMillis();
        for(int i = 0;i<20000;i++){
        buffer.append(String.valueOf(i));}
        endTime = System.currentTimeMillis();
        System.out.println("StringBuffer的执行时间:"+(endTime-startTime));
        
        startTime = System.currentTimeMillis();
        for(int i = 0;i<20000;i++){
        builder.append(String.valueOf(i));}
        endTime = System.currentTimeMillis();
        System.out.println("StringBuilder的执行时间:"+(endTime-startTime));
        
        startTime = System.currentTimeMillis();
        for(int i = 0;i<20000;i++){
        text = text + i;}
        endTime = System.currentTimeMillis();
        System.out.println("String的执行时间:"+(endTime-startTime));
    /*  StringBuffer的执行时间:4
        StringBuilder的执行时间:2
        String的执行时间:458   */
    }

}
All that work will definitely pay off
原文地址:https://www.cnblogs.com/afangfang/p/12619116.html