这两种字符串拼接方式哪一种好呢?或者说还有更好的拼接方式吗

如题,这两种字符串拼接方式哪一种好呢?或者说还有更好的拼接方式吗

img

img

这两种都不咋地
第二种换汤不换药,还是先拼接一个string再传进stringbuilder里面
如果字符串拼接的次数少,那么基本不用考虑内存会被大量字符串塞满的情况,就用
string.format()来拼接比较好,别用加号拼接,很容易搞不清到底哪里该放引号,应该用传参的方式把参数传递进来
如果需要频繁拼接字符串,比如要拼接一个复杂的sql语句
那么用stringbuilder可以减少string申请的内存
但是应该用stringbuilder.append和stringbuilder.appendformat方法进行拼接,而不是先用字符串拼接好了再转stringbuilder
-=-=-=
另,这两种方式可读性都比较好,用加号拼接可读性最差

大量字符串拼接可以用StringBuilder,少量String就够了,StringBuilder就不要用+了,直接append

我用这个


return String.format("/datum/%s/device/%s/%s/", str1, str2, str3);

两种都不建议用如下这种比较好
String s = new StringBuilder().append("./").append("name").append("123213").toString();

这两种方式都不好,特别是第二种,多此一举了。如果要用StringBuilder,就用它的append方法,一个个拼接
StringBuilder sb = new StringBuilder();
sb.append("./").append(activityName) 一直append完你要拼接的字段

首先从功能上来说都是类似的,正常情况下字符串的拼接一般项目中推荐使用StringBuilder,目的是不用多次创建字符串对象,
但是你的代码中实际上没有额外创建字符串对象,理论上String拼接的方式效率反而会快一些,
如果考虑线程安全的情况下,建议使用StringBuffer,否则使用StringBuilder即可。具体差别可参考如下链接:
https://www.cnblogs.com/su-feng/p/6659064.html