系统性能; StringBuffer 在性能上稍略于 StringBuilder, 但可以不用考虑线程安全问题; String 的 "+"符号操作起来简单方便, String 的使用也很简单便捷, java 底层会转换成 StringBuilder 来实现, 特别如果是要在循环体内使用, 建议选择其余两个。 使用StringBuffer、StringBuilder 的无参构造器产生的对象默认拥有 16 ...
String StringBuilder StringBuffer效率(性能)测试 我们通过各自拼接10000字符串来比较一下三者在执行时对时间和对内存资源的占用。 下面是测试代码: packagecom.xzlf.string;publicclassTestString{publicstaticvoidmain(String[] args){// 使用 String 进行字符拼接Stringstr="";longnum1=Runtime.getRuntime().freeMe...
String str += "3333";会先创建StringBuilder再使用append()拼接字符串,之后再toString()返回给String;如果String需要拼接多次,则会创建多个StringBuilder,调用多次toString()。因此效率比较低。 StringBuffer和StringBuilder效率相近。
然而,由于不需要进行同步(synchronization),StringBuilder在单线程环境下通常比StringBuffer性能更高。 StringBuffer是一个老类,从 Java 1.0 就存在了。它提供了一种线程安全的方式来进行字符串操作。因此,当多个线程需要读写同一个StringBuffer对象时,可以确保数据的一致性和完整性,但这会带来额外的开销。 测试环境 计...
();Stringstr2=newString();for(inti=0;i<=10000;i++){StringBuilderstringBuilder=newStringBuilder();StringtmpStr="2222";stringBuilder.append(str2).append(tmpStr);str2=stringBuilder.toString();}System.out.println(System.currentTimeMillis()-startLong);// 337//===startLong=System.currentTimeMillis...
String类是不可变类,任何对String的改变都会引发新的String对象的生成。 StringBuffer、StringBuilder 则是可变类,任何对它所指代的字符串的改变都不会产生新的对象。 StringBuffer和StringBuilder类的区别在于: StringBuffer是线程安全的。 StringBuilder不是线程安全的。