如果你喜欢“ABC” + stringval +“ABC”一条语句做的事,是一个不可改变的字符串拷贝,或两个(注意,ABC和123是在编译时间常数)周边斯卡拉字符串
奖金回合:使用类似以下的StringBuilder会有更多或更少的开销?
def surround(s:String, ss:String):String = {
val surrounded = new StringBuilder(s.length() + 2*ss.length(), s)
surrounded.insert(0,ss)
surrounded.append(ss)
surrounded.mkString
}
或者还有一种我不知道的更习惯的方式?
surround2与surround3之间的主要区别在于,surround3预先计算了支持StringBuilder所需的数组大小。这消除了扩展支持构建器的数组的可能性和成本,其细节隐藏在StringBuilder类中。 –