1.字符串连接操作符"+",不适合用在大规模字符串连接场合,由于字符串不可变,2个字符串连接在一起时,它们内容都要被拷贝。
测试代码:
public class _51StringConcatenation {
private static final int NUM_ITEMS = 5000;
private static final String LINE_FOR_ITEM = "DJLKFLDLJKFKJLDKJFKJDKFLKDLKL" +
"LKJFLKDLKFLKJDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDLKKFDFDJFKLKLDFDFKDF";
/**
* @param args
*/
public static void main(String[] args) {
statement();
statement2();
String result = statement3();
System.out.println(NUM_ITEMS*LINE_FOR_ITEM.length() == result.length());
}
private static String statement(){
String result = "";
long start = System.currentTimeMillis();
for(int i=0;i<NUM_ITEMS;i++){
result += LINE_FOR_ITEM;
}
System.out.println("String concatention Using Time:"+(System.currentTimeMillis() - start));
return result;
}
private static String statement2(){
StringBuilder result = new StringBuilder();
long start = System.currentTimeMillis();
for(int i=0;i<NUM_ITEMS;i++){
result.append(LINE_FOR_ITEM);
}
System.out.println("String Builder Using Time:"+(System.currentTimeMillis() - start));
return result.toString();
}
private static String statement3(){
StringBuilder result = new StringBuilder(NUM_ITEMS*LINE_FOR_ITEM.length());
long start = System.currentTimeMillis();
for(int i=0;i<NUM_ITEMS;i++){
result.append(LINE_FOR_ITEM);
}
System.out.println("String Builder When Allocat Size Using Time:"+(System.currentTimeMillis() - start));
return result.toString();
}
}
打印结果:
String concatention Using Time:35172
String Builder Using Time:47
String Builder When Allocat Size Using Time:0
true
具有初始大小StringBuilder性能最好,其次StringBuilder,“+”号连接最差,
测试jdk1.6测试,jdk1.6在编译时,已经把"+"号连接转换成StringBuilder,不知道为何性能还是这么差
分享到:
相关推荐
输入两个字符串s1、s2,将字符串s1、s2中每个小写字母转换为大写字母,再将s2字符串连接到s1串的尾部。 字符串的比较。输入两个字符串s1、s2,比较字符串s1、s2的大小。 数制转换。编写一个将16进制数字串转换成10...
C语言训练程序_自定义字符串连接函数
SQL_Server_连接字符串和身份验证.pdf学习数据库的入门最头痛的应该是数据库连接字符串的书写吧。
字符串连接就是将一个字符串连接到另一个字符串的末尾,使其组合成一个新的字符串,在字符串处理函数中,strcat 函数具有字符串连接功能。下面是用C语言实现不使用是strcat 函数实现连接两个字符串的功能。 源代码:...
MS_SQL_Server_数据库连接字符串详解
两个字符串连接为:"+ a + b); } else { Console.WriteLine("两个字符串为:{0}{1}"ab ); }2 if (a.IndexOf (b)>-1) //判断字符串之间是否包含 { Console.WriteLine("两个字符串连接为:"...
C#_数据库连接字符串集合(Sql_验证Windows_身份验证)
SIMATIC Wincc中与字符串相关的函数使用方法(拷贝_比较_连接_转换)及举例说明
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。 注意: 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串...
不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。 输入: 每一行包括两个字符串,长度不超过100。 输出: 可能有多组测试数据,对于每组数据, 不借用任何字符串库函数实现无冗余...
该程序是我写的博客“一起talk C栗子吧(第六十一回:C语言实例--字符串连接)”的配套程序,共享给大家使用
用C++重载操作运算符+,使之能够完成两个字符串的连接
C#连接Oracle数据库字符串 C#连接Oracle数据库字符串
asp连接mysql字符串,使用odbc 3.51
面向对象字符串的连接 c++,可以实现两个字符串的连接
重载+=为字符串的连接
C语言中 字符串连接函数,例子。。。。。。。
自己转载的希望有用, 主要讲数据库连接字符串的写法
pb11.5通过连接字符串连接MySQL,在XP环境下测试通过。
#include #include void main() { char *a="My name is ",*b; puts(a); gets(b); strcat(a,b); puts(a); }