在阿里巴巴java开发手册上,推荐在循环体里,字符串的连接使用StringBuilder的append方法,并举出反例;
反例:
String str = "strat";
for (int i = 0; i < 100; i++) {
str = str + "hello";
}
今天就说说对String,StringBuilder 和 StringBuffer的浅认识
String是一个包装类,它是Immutable,除了hash这个属性其它属性都声明为final,所以例如拼接字符串时候会产生很多无用的中间对象
String str = “strat”;
str = str + “hello”;
用String类对象直接拼接时,JVM会创建一个临时的StringBuffer或者StringBuilder类对象,并调用其append()方法完成字符串的拼接,这是因为String类是不可变的,调用后在进行toString(),因此这就有4个对象了,两个拼接的string,一个临时的StringBuilder和最后String。造成内存资源浪费
StringBuilder 和 StringBuffer的区别是线程安全,Builder没有线程安全,因此它的速度更快。
一些浅认识,如有错误欢迎指出。