Java中String StringBuffer StringBuilder比较
来源:互联网 发布:知乎指数 编辑:程序博客网 时间:2024/06/05 06:11
简述:
试着比较下Java中String StringBuffer StringBuilder的性能
知识点:
String StringBuffer StringBuilder
1. test1() 结果可知String的效率最好
result字符串先做”Hello“ + ”World!" 处理,然后才赋值给result,之开辟了一次内存段
2. test2 ()结果StringBuilder效率最好
getString函数执行的是 先开辟一个内存段在合并(扩展)内存
3. test3 ()结果String效率最差
String对象是不可变对象,每次“+=” 操作都会构造新的String对象
代码:
package test.stringbuilder;/** * compare the efficiency between String and StringBuffer and StringBuilder */public class TestString_StringBuffer_StringBuilder {private static long startTime;private static long endTime;private static double timeCost;public static void main(String[] args){test1();test2();test3();}//test1public static void test1(){System.out.println("TEST_1:");startTime = System.currentTimeMillis();for(int i = 0;i < 10000000;i++){String result = "Hello" + "World!";}endTime = System.currentTimeMillis();timeCost = (endTime - startTime) / (1000.0);System.out.println("cost of String: " + timeCost + "(second)");startTime = System.currentTimeMillis();for(int i = 0;i < 10000000;i++){StringBuffer result = new StringBuffer().append("Hello").append("World!");}endTime = System.currentTimeMillis();timeCost = (endTime - startTime) / (1000.0);System.out.println("cost of StringBuffer: " + timeCost + "(second)");startTime = System.currentTimeMillis();for(int i = 0;i < 10000000;i++){StringBuilder result = new StringBuilder().append("Hello").append("World!");}endTime = System.currentTimeMillis();timeCost = (endTime - startTime) / (1000.0);System.out.println("cost of StringBuilder: " + timeCost + "(second)");}//test2public static String getStringByString(String s1, String s2){return s1 + s2;}public static String getStringByStringBuffer(String s1, String s2){return new StringBuffer().append(s1).append(s2).toString();}public static String getStringByStringBuilder(String s1, String s2){return new StringBuilder().append(s1).append(s2).toString();}public static void test2(){System.out.println("TEST_2:");startTime = System.currentTimeMillis();for(int i = 0;i < 10000000;i++){getStringByString("Hello","World!");}endTime = System.currentTimeMillis();timeCost = (endTime - startTime) / (1000.0);System.out.println("cost of String: " + timeCost + "(second)");startTime = System.currentTimeMillis();for(int i = 0;i < 10000000;i++){getStringByStringBuffer("Hello","World!");}endTime = System.currentTimeMillis();timeCost = (endTime - startTime) / (1000.0);System.out.println("cost of StringBuffer: " + timeCost + "(second)");startTime = System.currentTimeMillis();for(int i = 0;i < 10000000;i++){getStringByStringBuilder("Hello","World!");}endTime = System.currentTimeMillis();timeCost = (endTime - startTime) / (1000.0);System.out.println("cost of StringBuilder: " + timeCost + "(second)");}//Test3 public static void test3(){System.out.println("TEST_3:");String rawStr = "Start:";StringBuffer rawStringBuffer = new StringBuffer("Start:");StringBuilder rawStringBuilder = new StringBuilder("Start:");startTime = System.currentTimeMillis();for(int i = 0;i < 10000;i++){rawStr += "first,";rawStr += "second,";}endTime = System.currentTimeMillis();timeCost = (endTime - startTime) / (1000.0);System.out.println("10k cost of String: " + timeCost + "(second)");startTime = System.currentTimeMillis();for(int i = 0;i < 100000;i++){rawStringBuffer.append("first,").append("second,");}endTime = System.currentTimeMillis();timeCost = (endTime - startTime) / (1000.0);System.out.println("100k cost of StringBuffer: " + timeCost + "(second)");startTime = System.currentTimeMillis();for(int i = 0;i < 100000;i++){rawStringBuilder.append("first,").append("second,");}endTime = System.currentTimeMillis();timeCost = (endTime - startTime) / (1000.0);System.out.println("100k cost of StringBuilder: " + timeCost + "(second)");}}
输出:
- Java中String StringBuffer StringBuilder比较
- java 中String,StringBuilder,StringBuffer比较
- Java String StringBuffer StringBuilder比较
- Java String、StringBuffer、StringBuilder比较
- 【Java】StringBuilder、StringBuffer、String 比较
- java中String、StringBuffer、StringBuilder区别与比较
- 朝花夕拾:Java中String,StringBuffer,StringBuilder使用方法以及异同比较
- Java中字符串对象String、StringBuffer、StringBuilder的比较
- java中String、StringBuilder和StringBuffer效率的比较
- java 中String , StringBuilder , StringBuffer的一些比较
- 朝花夕拾:Java中String,StringBuffer,StringBuilder使用方法以及异同比较
- java中String、StringBuffer、StringBuilder
- java中String、StringBuffer、StringBuilder
- String,StringBuffer,StringBuilder比较
- String StringBuffer StringBuilder比较
- String, StringBuffer, StringBuilder比较
- String,StringBuffer,StringBuilder比较
- String StringBuffer StringBuilder比较
- 无线传感网络国内外研究发展状况
- html学习心得
- poj2246 Matrix Chain Multiplication 矩阵连乘
- shell中字符串的截取
- epoll使用例子
- Java中String StringBuffer StringBuilder比较
- Objective-C的一些语言点梳理
- EPOLL使用注意
- epoll 使用
- epoll去实现一个服务器
- C# ListView用法详解
- 第八章 处理图像、动画和滑块
- struts2配置
- 同步和异步的区别(经典)