应一个大量字符串拼接的任务

测试一下StringBuilder、StringBuffer、String在操作字符串拼接时候的性能

性能上理论是StringBuilder  >  StringBuffer  >  String

测试方法:

创建一个StirngTest类含有静态常量字符串是26个字母,以及一个循环轮数

在测试时采用循环来操作字符串的拼接,计算操作时间并输出:

package com.test.xlc;

import java.util.Random;

public class StringTest {

    static final String strFinal = "abcdefghijklmnopqrstovwxyz";
static final int forInt = 100; static void StringBuilderTest() { Random rand = new Random(47);
StringBuilder strB = new StringBuilder();
long start = System.currentTimeMillis();
for(int i = 0; i < forInt; ++i) {
int randInt = rand.nextInt(23);
strB.append(strFinal.substring(randInt, randInt + 4));
}
long end = System.currentTimeMillis();
// System.out.println(strB.toString());
System.out.println("StringBuilderTest:" + (end - start));
} static void StringBufferTest() {
Random rand = new Random(47);
StringBuffer strB = new StringBuffer();
long start = System.currentTimeMillis();
for(int i = 0; i < forInt; ++i) {
int randInt = rand.nextInt(23);
strB.append(strFinal.substring(randInt, randInt + 4));
}
long end = System.currentTimeMillis();
// System.out.println(strB.toString());
System.out.println("StringBufferTest:" + (end - start));
} static void StringOnly() {
Random rand = new Random(47);
String str = "";
long start = System.currentTimeMillis();
for(int i = 0; i < forInt; ++i) {
int randInt = rand.nextInt(23);
str += strFinal.substring(randInt, randInt + 4);
}
long end = System.currentTimeMillis();
// System.out.println(str);
System.out.println("String:" + (end - start));
} public static void main(String...args) {
StringBuilderTest();
StringBufferTest();
StringOnly(); }
}

测试循环次数:

100

StringBuilderTest:0
StringBufferTest:0
String:0

1000

StringBuilderTest:1
StringBufferTest:0
String:7

10000

StringBuilderTest:2
StringBufferTest:2
String:217

100000

StringBuilderTest:12
StringBufferTest:10
String:17136

1000000

StringBuilderTest:55
StringBufferTest:53
我提前终止了

之后我又测试了拼接长串,本实验结果显示在拼接字符串的效率上:

StringBuffer  >    StringBuilder  >  String

Java中测试StringBuilder、StringBuffer、String在字符串拼接上的性能的更多相关文章

  1. [java] StringBuilder / StringBuffer / String 建立字符串

    1.三者在建立新字符串速度方面的比较: StringBuilder >  StringBuffer  >  String 2.线程安全性: StringBuilder:线程非安全的 Str ...

  2. Java中,那些关于String和字符串常量池你不得不知道的东西

    老套的笔试题 在一些老套的笔试题中,会要你判断s1==s2为false还是true,s1.equals(s2)为false还是true. String s1 = new String("xy ...

  3. JAVA 中的 StringBuilder 和 StringBuffer 适用的场景是什么?

    JAVA 中的 StringBuilder 和 StringBuffer 适用的场景是什么? 最简单的回答是,stringbuffer 基本没有适用场景,你应该在所有的情况下选择使用 stringbu ...

  4. JAVA StringBuilder StringBuffer String比较

    字符串连接时的效率: StringBuilder>StringBuffer>String 区别: StringBuilder效率最高,但是不是线程安全的,适用于单线程.多线程用String ...

  5. java中的数据类型,运算符,字符串,输入输出,控制流,大数值,数组; 《java核心技术卷i》 第三章:java基本程序结构;

    <java核心技术卷i> 第三章:java基本程序结构: 每次看书,去总结的时候,总会发现一些新的东西,这次对于java的数组有了更深的了解: java中的数据类型,运算符,字符串,输入输 ...

  6. java中int转成String位数不足前面补零

    java中int转成String位数不足前面补零 转载自:http://ych0108.iteye.com/blog/2174134 java中int转String位数不够前面补零 String.fo ...

  7. java中的switch用String作为条件

    在开发java程序的过程中,我们遇到了条件推断首选就是switch,可是java中的switch功能不支持字符串作为条件.这时我们该怎么办呢? --使用枚举. 一.枚举简单了解    1.enum是一 ...

  8. 如何在Java中测试类是否是线程安全的

    通过优锐课的java核心笔记中,我们可以看到关于如何在java中测试类是否线程安全的一些知识点汇总,分享给大家学习参考. 线程安全性测试与典型的单线程测试不同.为了测试一个方法是否是线程安全的,我们需 ...

  9. Java中toString()与new String()

    Java中toString()与new String(): 1.错误演示: FileInputStream fileIn = new FileInputStream(filePath);byte[] ...

随机推荐

  1. gulp+webpack构建配置

    使用构建工具之前我觉得前端好蠢,css没有变量,不能写循环,为了兼容要写好多前缀,hmtl写多页面中有同一个header,我就粘贴复制,然后修改的时候每个都要改. 我还不会压缩和合并,每次都要按F5刷 ...

  2. 【通信】Jave代码中生成url http请求

    /** * 向指定 URL 发送POST方法的请求 * * @param url * 发送请求的 URL * @param param * 请求参数,请求参数应该是 name1=value1& ...

  3. Django开发笔记六

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.登录功能完善 登录成功应该是重定向到首页,而不是转发 ...

  4. ROS中的CMakeLists.txt

    在ROS的编程过程中,如果CMakeLists.txt如果写不好,编译就很难成功.如果看不懂CMakeLists.txt那么很多错误你也不知道时什么回事.所以深入了解它是很有必要的.现在我们就来看看它 ...

  5. Dubbo服务容错(整合hystrix)

    简介:Hystrix旨在通过控制那些访问远程系统.服务和第三方库的节点从而对延迟和故障提供更强大的容错能力,Hystrix具备拥有回退机制和断路器功能的线程和信号隔离.请求缓存和请求打包以及监控和配置 ...

  6. Linux 内核里的“智能指针”【转】

    转自:http://blog.jobbole.com/88279/ 众所周知,C/C++语言本身并不支持垃圾回收机制,虽然语言本身具有极高的灵活性,但是当遇到大型的项目时,繁琐的内存管理往往让人痛苦异 ...

  7. php- post表单 input name属性的问题

    <input type='text'  style='width: 99px' name='deptNo'></td> name为字符串的时候传递的是单个字符串 <inp ...

  8. HTML学习笔记05-文本格式化

    HTML格式化标签 HTML使用标签<b>与<i>对输出的文本进行格式,如:粗体or斜体 这些HTML标签称为格式化标签 <!DOCTYPE HTML> <h ...

  9. 【转】Source Insight中文注释为乱码的解决办法

    我网上查了一堆解决办法,但是都是2017年以前的,并且都是针对于source insight 3.5及以下版本的解决方案,软件版本都到4.0了,应该有新方法出现. 干货:Source Insight ...

  10. 016_nginx运维问题总结

    一.关于nginx请求包过大的解决思路 message-api.jyall.me.conf nginx报错问题问题定位,经分析跟接入navigator后关联不大,可参考一下结论连接超时抓包分析了一下每 ...