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 */ } }
原文:https://www.cnblogs.com/afangfang/p/12619116.html