java循环列表,每天数据中字段字符串拼接效率问题

list循环,每条数据里有几个字段是字符串和参数拼接起来的,现在拼接用+直接拼字符串,还是用stringbuilder append,还是用哪个方案,能提高下效率。

img

img

stringbuilder 的append效率比较高

stringbuilder效率更高

给你介绍一下两者的区别
String类:
1、字符串是常量,一旦创建不能被修改。
2、字符串底层是一个被final修饰的数组,不能改变,是一个常量。
3、private final byte[] value;
4、进行字符串相加时,内存中会出现多个字符串,占用空间大,效率低下,每次拼接都会new一个新的对象,会占用空间。

StringBuilder类:
1、又叫字符串缓冲区,可以提高字符串的操作效率(可以看成是一个可以变化的字符串)。
2、底层也是一个数组,但是没有被final修饰,所以可以改变长度,默认长度是16,能够自动扩容。
3、byte[] value = new byte[16];
4、在内存中不会像String类一样会出现多个数组,它始终是一个数组,占用空间小,效率高。

字符串操作常用的java原生类有3个
String StringBuffer StringBuilder
如果你的数据的量很小,三者效率差异较小;
数量级很大的时候,StringBuffer和StringBuilder优于String;
单线程情况下,StringBuilder和StringBuffer性能基本一致
多线程情况下,StringBuilder性能优于StringBuffer,
虽然大家习惯使用StringBuilder,但在有必要时应该还是要使用StringBuffer,因为StringBuffer是线程安全的