java 字符串拼接的单元测试

整体内容介绍

本文分为几个部分: * String、StringBuffer、StringBuilder的对比 * 字符串拼接方式的对比 使用到的内容: * Junit4单元测试 * slf4j的日志框架

String、StringBuffer、StringBuilder的对比

对于这三者使用的场景做如下概括(参考:《编写搞质量代码:改善java程序的151个建议》):

字符串拼接方式对比package com.zy.util;import org.junit.Test;import org.slf4j.Logger;import org.slf4j.LoggerFactory;{private final Logger logger = LoggerFactory.getLogger(this.getClass());() {String s = “”;long ts = System.currentTimeMillis();for (int i = 0; i < 10000; i++) {s = s + String.valueOf(i);}long te = System.currentTimeMillis();//System.out.println(“+ cost {} ms:”+(te-ts));logger.info(“+ cost {} ms”, te – ts);}() {String s = “”;long ts = System.currentTimeMillis();for (int i = 0; i < 10000; i++) {s = s.concat(String.valueOf(i));}long te = System.currentTimeMillis();//System.out.println(“concat cost {} ms:”+(te-ts));logger.info(“concat cost {} ms”, te – ts);}() {StringBuffer sb = new StringBuffer();long ts = System.currentTimeMillis();for (int i = 0; i < 10000; i++) {sb.append(String.valueOf(i));}sb.toString();long te = System.currentTimeMillis();//System.out.println(“StringBuffer cost {} ms:”+(te-ts));logger.info(“StringBuffer cost {} ms”, te – ts);}() {StringBuilder sb = new StringBuilder();long ts = System.currentTimeMillis();for (int i = 0; i < 10000; i++) {sb.append(String.valueOf(i));}sb.toString();long te = System.currentTimeMillis();//System.out.println(“StringBuilder cost {} ms:”+(te-ts));logger.info(“StringBuilder cost {} ms”, te – ts);}}

上述程序结果如下:

testPlus信息: + cost 504 mstestConcat信息: concat cost 196 mstestStringBuffer信息: StringBuffer cost 2 mstestStringBuilder信息: StringBuilder cost 2 ms

可以看出,+和concat的方式速度较慢,需要创建新串。 而StringBuffer和StringBuilder较快。

参考资源不足地方使用javap进行反编译,具体再做分析

人若勇敢就是自己最好的朋友

java 字符串拼接的单元测试

相关文章:

你感兴趣的文章:

标签云: