哈喽 大家好!我是相当rapper的程序员这也是我首次认真写的一篇文章,如果有任何错误请指正。
相比大家对String 并不陌生对于String 大家一定想到的是StringBuilder 与StringBuffer。他们之间的区别就简单一说。
StringBuffer:线程安全,StringBuilder:线程不安全。因为 StringBuffer 的所有公开方法都是 synchronized 修饰的,而 StringBuilder 并没有 StringBuilder 修饰。
同时我把代码给大家贴出来给大家更加详细的查看
接下来直接用代码示例验证一下
private static final Logger logger = LoggerFactory.getLogger(textMain.class);
public static void main(String[] args) {
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < 20; i++) {
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10000; i++) {
stringBuffer.append("a");
}
}
}).start();
}
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < 20; i++) {
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10000; i++) {
stringBuilder.append("a");
}
}
}).start();
}
String stringBufferToStr = stringBuffer.toString();
logger.info("stringBufferToStr is {}", stringBufferToStr.length());
String stringBuilderToStr = stringBuilder.toString();
logger.info("stringBuilderToStr is {}", stringBuilderToStr.length());
}
此为输出结果`
14:16:48.056 [main] INFO com.how2java.springboot.web.textMain - stringBufferToStr is 200000
14:16:48.066 [main] INFO com.how2java.springboot.web.textMain - stringBuilderToStr is 96092
言归正传 说道我们主题StringJoiner此类实在工具包里面的**java.util.StringJoiner;**所以直接引入就可以。同时底层是用的StringBuilder来实现的 不是线程安全的。但效率高。用法也很简单
StringJoiner stj = new StringJoiner("???");
stj.add("hello");
stj.add("world");
stj.add("欢迎使用StringJoiner");
System.out.println(stj);
输出为
hello???world???欢迎使用StringJoiner
可以清楚看到 他们的连接符是用的构造方法中的参数进行拼接,是一个好用的官方工具类