码迷,mamicode.com
首页 > 编程语言 > 详细

java String拼接的方法选择及性能分析

时间:2015-03-17 17:52:34      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

 

String 拼接的方法选择

在拼接静态字符串时,尽量用 +,因为通常编译器会对此做优化,如:

 String test = "this " + "is " + "a " + "test " + "string"

编译器会把它视为:

 String test = "this is a test string"

在拼接动态字符串时,尽量用 StringBuffer 或 StringBuilder的 append,这样可以减少构造过多的临时 String 对象。

 

测试代码:(按照附录1修改)

 1 public class teststring {
 2    
 3     public void testPlus() {
 4         String s = "";
 5         long ts = System.currentTimeMillis();
 6         for (int i = 0; i < 10000; i++) {
 7             s = s + String.valueOf(i);
 8         }
 9         long te = System.currentTimeMillis();
10         System.out.println("+ cost {} ms  "+( te - ts));
11     }
12     
13     public void testConcat() {
14         String s = "";
15         long ts = System.currentTimeMillis();
16         for (int i = 0; i < 10000; i++) {
17             s = s.concat(String.valueOf(i));
18         }
19         long te = System.currentTimeMillis();
20         System.out.println("concat cost {} ms  "+ (te - ts));
21     }
22 
23     
24     public void testStringBuffer() {
25         StringBuffer sb = new StringBuffer();
26         long ts = System.currentTimeMillis();
27         for (int i = 0; i < 10000; i++) {
28             sb.append(String.valueOf(i));
29         }
30         sb.toString();
31         long te = System.currentTimeMillis();
32         System.out.println("StringBuffer cost {} ms  "+(te - ts));
33     }
34     
35     public void testStringBuilder() {
36         StringBuilder sb = new StringBuilder();
37         long ts = System.currentTimeMillis();
38         for (int i = 0; i < 100000; i++) {
39             sb.append(String.valueOf(i));
40         }
41         sb.toString();
42         long te = System.currentTimeMillis();
43         System.out.println("StringBuilder cost {} ms  "+(te - ts));
44     }
45     
46     public static void main(String[] args) {
47         teststring a = new teststring();
48         a.testConcat();
49         a.testPlus();
50         a.testStringBuffer();
51         a.testStringBuilder();
52     }
53 }

 

运行结果:

concat cost {} ms 113
+ cost {} ms 195
StringBuffer cost {} ms 2
StringBuilder cost {} ms 9

 

附录:

Java 5种字符串拼接方式性能比较 http://blog.csdn.net/kimsoft/article/details/3353849

2 Java 性能优化之 String 篇  http://www.ibm.com/developerworks/cn/java/j-lo-optmizestring/

java String拼接的方法选择及性能分析

标签:

原文地址:http://www.cnblogs.com/scw2901/p/4344884.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!