首先是第一件事。 这不是您的微平台Java方式
阅读如何在Java中编写正确的微基准测试?第一。您的电话号码完全无关紧要,因此请忽略它们。
看第二个例子:
abc= "AZY"+"BAX"+"CBA"+...
在我看来,这些看起来像编译时间常数。这
String将在编译时连接起来,并且没有基准可言。这是无用的比较,因为
StringBuilderor
的全部要点
String.join是将
String不是编译时间常数的s 连接在一起。
继续比较
StringBuilder和
String.join。查看源代码:
public static String join(CharSequence delimiter, CharSequence... elements) { Objects.requireNonNull(delimiter); Objects.requireNonNull(elements); // Number of elements not likely worth Arrays.stream overhead. StringJoiner joiner = new StringJoiner(delimiter); for (CharSequence cs: elements) { joiner.add(cs); } return joiner.toString();}这使用
StringJoiner。一个
StringJoiner简单地使用
StringBuilder引擎盖下,所以两者是等效的。
通常看 代码 比尝试对性能进行基准测试要有用得多。即使您正确进行基准测试。
还值得注意的是,您的第一种方法使用
join,
String在“”(空格)上加入了1000
s。而您的
StringBuilder方法只是将它们附加在一起。这两个不一样。
该
String.join方法的重点是您可以执行以下操作:
String.join(", ", "a", "b", "c") // result is "a, b, c"使用a,
StringBuilder您将不得不添加更多代码。



