本文主要是介绍Java防挨骂--01,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在遇到字符拼接需求时,习惯使用StringBuilder,而不要使用String.
因为String是不可变字符序列,在拼接时会产生新的String对象来进行拼接
StringBuider是可变字符序列,在拼接时效率和对资源的占用都表现更优。
StringBuffer也是可变字符序列,它与StringBuider的区别有,它更安全(会做线程同步检查),但是效率较低(因为做了检查)。
package 常用类学习;public class SStringSsplicing {//记住养成习惯,遇到字符串拼接就用 StringBuilderpublic static void main(String[] args) {long num1 = Runtime.getRuntime().freeMemory();long time1 = System.currentTimeMillis();String S="";for (int j=1;j<=5000;j++){S=S+j; //因为String是不可变序列,故要拼接5000次就要产生5000个新对象,这对一个上线的系统而言是非常不利的}long num2 = Runtime.getRuntime().freeMemory();long time2 = System.currentTimeMillis();System.out.println("用String做拼接的后果");System.out.println("内存:"+(num1-num2));System.out.println("时间:"+(time2-time1));long num3 = Runtime.getRuntime().freeMemory();long time3 = System.currentTimeMillis();StringBuilder S2= new StringBuilder("");for (int j=1;j<=5000;j++){S2=S2.append(j);}long num4 = Runtime.getRuntime().freeMemory();long time4 = System.currentTimeMillis();System.out.println("用StringBuilder做拼接的后果");System.out.println("内存:"+(num3-num4));System.out.println("时间:"+(time4-time3));}
}
这篇关于Java防挨骂--01的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!