StringBuilder,String.concat(),String+String 哪一个效率高 今天,我在写C#代码时,突然发现一个最熟悉的陌生人 —— string.Format。在写C#代码的日子里,与它朝夕相伴,却没有真正去了解它。只知道在字符串比较多时,用它比用加号进行字符串连接效率更高(当然也更方便)。可是却从来没有问过为什么? 在生活中也有...
String.concat 拼接测试,测试长度10000,测试字符串数组长度1,完成时间3 StringBuilder 拼接测试,测试长度10000,测试字符串数组长度1,完成时间4 到此,可以看出,绝大多数情况下StringBuilder妥妥的比String 使用循环快,但是跟String直接相加差不多,String concat效率跟StringBuilder差不多,很多时候还要快一些,这些都是为什么呢?
+左右可以为null,concat为会空指针。 如果拼接空字符串,concat会稍快,在速度上两者可以忽略不计,如果拼接更多字符串建议用StringBuilder。 从字节码来看+号编译后就是使用了StringBuiler来拼接,所以一行+++的语句就会创建一个StringBuilder,多条+++语句就会创建多个,所以为什么建议用StringBuilder的原因。
concat的计算效率要比+的效率高 concat只适用于string和string的拼接,+适用于string和任何的拼接
两个方法效率计算代码如下: public static void main(String[] args) { String s1 = "a"; String str1=""; String str2=""; // 计算concat所用时间 long str1Start = System.currentTimeMillis(); for (int i=0;i<10000;i++){ str1=str1.concat(s1); ...
而利用自定义创建StringBuilder对象的方式,只是创建一次,效率高,消耗内存小。注意要是要求并发环境或者要求线程安全的情形下,用StringBuffer对象。因为StringBuffer的append()方法上加了synchronize 锁。但因为加锁,所以效率有所下降。 同时concat()方式类似append()。
所以在实际编码中,尽量少用String的“+”和“+=”操作,String的concat()方法效率也要远高于“+”和“+=”运算符,但和StringBuilder类的效率比起来还是要相差很远。 1.3 StingBuilder和StringBuffer的区别 通过查看源码可以发现其实这两个类实现的方法都差不多,只不过StringBuffer对几乎所有的方法都做了同步处理,而...
StringBuilder>String.Concat()>String+
如果拼接的字符串是一个空字符串(""),那么 concat 的效率要更高一点,毕竟不需要 new StringBuilder 对象。 如果拼接的字符串非常多,concat() 的效率就会下降,因为创建的字符串对象越来越多。 5.4、join()方法 String 类有一个静态方法 join(),可以这样来使用。 String chenmo = "沉默"; String wanger = "...
.2 concat方法, 调用String::concat方法实现拼接; .3 StringBuild::append方法实现拼接; 我们先来看看三种拼接方式的效率差异: concat.jpg 这是实验代码, 分别使用"+", concat 和 StringBuild::append 进行了10万次的字符串拼接; 拼接的字符串统一使用""的静态字符串, 从前次的分享可知这种声明的字符串会被缓存...