zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    一直追求技术好吗?
    设计模式前言
    vba 行 列 单元格 统计
    JavaScript 仿LightBox内容显示效果
    Excel 比大小
    多态
    JavaScript 图片切换展示效果
    vba 单元格 一系例操作
    关于Flex的争论(富客户端、弱客户端)
    input文本框样式代码实例
  • 原文地址:https://www.cnblogs.com/afangfang/p/12619116.html
Copyright © 2011-2022 走看看