从 StringBuilder 转换为 String 的正确方法是什么?

ele*_*ter 2 stringbuilder scala

从我在网上看到的情况来看,人们似乎建议使用 toString() 方法,但是文档指出:

创建此对象的字符串表示形式。默认表示取决于平台。在 java 平台上,它是类名、“@”和十六进制对象的哈希码的串联。

所以看起来使用这种方法可能会导致一些问题?

还有 mkString 和 result()。后者似乎最有意义。但我不确定这 3 种方法之间的区别是什么,以及是否应该使用 result() 。

And*_*kin 5

toString实施目前只是重定向到该result方法无论如何,所以这两种方法都会以同样的方式行事。但是,它们表达的意图略有不同:

  • toString请求对StringBuilder当前状态的文本表示,该表示“简洁但内容丰富(并且)易于人们阅读”。因此,理论上,此方法的(模糊)规范不禁止缩写结果,或以任何其他方式增强简洁性和可读性。
  • result请求实际构造的字符串。这里似乎不可能有不同的读数。

因此,如果您想获得结果字符串,请使用result尽可能清楚地表达您的意图。

这样,StringBuilder.toString当字符串长度超过 9000 kB 时,您的代码的读者将不必怀疑是否会为了“简洁”而缩短某些内容或类似的内容。

mkString是别的东西完全,它主要用于点缀分离,如"hello".mkString(",") == "h,e,l,l,o"

一些进一步的链接:

只需使用result().