举个例子,excel导入数据,数据大概有一万多条,为了提升插入效率,sql语句格式为
insert into tableName(fieldName1,fieldName2,fieldName3) values (值1, 值2, 值3), (值1, 值2, 值3)......
在拼接该sql语句,我最开始用的是String,结果发现拼接速度很慢,一万多条数据就拼接用了47s,后面改成StringBuffer,
结果才1s。
原因:
String: 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。
StringBuffer :每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。所以在一般情况下我们推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下。