关于字符串处理在Java中通常有三个类进行处理:
String
StringBuilder
StringBuffer
StringBuilder
StringBuffer
这三个类进行字符串拼接,StringBuilder和StringBuffer都有同样的方式,都拥有append()方法.而StringBuilder和StringBuffer不同之处在于,在做一次append操作的时候,StringBuffer是线程安全的(仅仅是在一次操作)。StringBuffer的线程安全在于,做append()操作的时候,在方法前增加了synchronized操作。所以可以预见StringBuilder和StringBuffer在做append()的方法的时候StringBuilder更快(而在单线程下,这种差异不是特别大)。
String类进行字符串添加的方式有两种:
1.直接使用 “+” 进行拼接
2.使用concat进行拼接
下面就根据这四种操作进行测试。
测试用例:
private static final int OUTER_ITERATION = 20; private static final int INNER_ITERATION = 50000; @Test public void testString() { String addTestStr = ""; for (int outerIndex = 0; outerIndex <= OUTER_ITERATION; outerIndex++) { StopWatch stopWatch = new LoggingStopWatch("StringAddConcat"); addTestStr = ""; for (int innerIndex = 0; innerIndex <= INNER_ITERATION; innerIndex++) addTestStr += "*"; stopWatch.stop(); } System.out.println(addTestStr); } @Test public void testStringConcat() { String concatTestStr = ""; for (int outerIndex = 0; outerIndex <= OUTER_ITERATION; outerIndex++) { StopWatch stopWatch = new LoggingStopWatch("StringConcat"); concatTestStr = ""; for (int innerIndex = 0; innerIndex <= INNER_ITERATION; innerIndex++) concatTestStr = concatTestStr.concat("*"); stopWatch.stop(); } } @Test public void testStringBuffer() { StringBuffer concatTestSb = null; for (int outerIndex = 0; outerIndex <= OUTER_ITERATION; outerIndex++) { StopWatch stopWatch = new LoggingStopWatch("StringBufferConcat"); concatTestSb = new StringBuffer(); for (int innerIndex = 0; innerIndex <= INNER_ITERATION; innerIndex++) concatTestSb.append("*"); stopWatch.stop(); } } @Test public void testStringBuilder() { StringBuilder concatTestSbu = null; for (int outerIndex = 0; outerIndex <= OUTER_ITERATION; outerIndex++) { StopWatch stopWatch = new LoggingStopWatch("StringBuilderConcat"); concatTestSbu = new StringBuilder(); for (int innerIndex = 0; innerIndex <= INNER_ITERATION; innerIndex++) concatTestSbu.append("*"); stopWatch.stop(); } }
分别运行得到的结果
StringBuilder > StringBuffer > concat> +
相关推荐
JAVA的字符串拼接与性能 概述:本文主要研究的是JAVA的字符串拼接的性能,原文中的测试代码在功能上并不等价,导致concat的测试意义不大。不过原作者在评论栏给了新的concat结果,如果有兴趣的同学建议自己修改代码...
主要介绍了Java字符串拼接效率测试过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
用于测试java字符串几种连接方式的效率,主要包括四类对比测试:1,StringBuffer连接,2,String的Format连接,3,String相加连接,4,StringBuffer的append串起来连接。测试结果如下: String Buffer: 580ms String...
java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...
JAVA的字符串拼接[参照].pdf
95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip95.java拼接字符串案例.zip...
Java字符串长度不够,将其前面补0或者后面补0,适用于字典序比较前,将要比较字符串的位数保持一致,再进行比较。
java字符串处理取出括号内的字符串 都是我自己试过可以用的j
java 字符串 详细实例代码 字符串检索 可改变字符串 字符串生成器 日期和时间字符串格式化
java 字符串的加密 java 字符串的加密 java 字符串的加密
java压缩字符串
一款方便将java与sql语句互相转换的小工具,在日常工作开发中,非常实用,f方便写字符串拼接的语句,常用选项是String和StringBuffer
主要介绍了Java 字符串拼接竟然有这么多姿势,很值得大家收藏,需要的朋友可以参考下
89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符...
JAVA 字符串 操作
有关java里的一些字符串的总结,适合java初学者学习。
java字符串的各种编码转换. java字符串的各种编码转换
要说姿势,“+”号操作符必须是字符串拼接最常用的一种了,没有之一。 String chenmo = "沉默"; String wanger = "王二"; System.out.println(chenmo + wanger);
96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip96.java字符串反转案例.zip...
29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29.java字符串+操作.zip29...