在我的一个java工具中,我有一些字符串被重复创建,其中包含的变量如下所示:
for (String value : values) {
// unrelated code omitted for clarity
String outputValue = "blah blah blah " + foo + " blah " + bar + " blah";
// code that writes out the created outputValue
}
我无法帮助,但觉得这不是在创建的String
中具有“参数”的最佳方法,因为非参数文本总是相同的。但是,据我所知,使用String.format
或类似插件来插入这些参数实际上效率会低于简单连接。
创建这些参数化字符串的方法是否有更好/更有效(关于时间而不是内存)?
答案 0 :(得分:0)
据我所知,使用String.format或类似插件 参数实际上比简单连接效率低。
你有什么证据支持这个?为什么你认为根据你的应用程序正在做的其他事情值得担心?听起来像是对我的微观优化。
如果您的需求很广泛,我会推荐任何模板解决方案,如Velocity。
答案 1 :(得分:0)
最有效的方法可能是使用StringBuilder。
StringBuilder builder = new StringBuilder("blah blah blah");
builder.append(yourvalue).append("blah");
StringBuilder允许的是避免多个昂贵的字符串连接。当你最终完成时,你只需要调用builder.toString()
来获得最终的字符串。
答案 2 :(得分:0)
在使用StringBuffer
或StringBuilder
阅读单线和超高效难以阅读的代码之间进行权衡。因此,我认为这个问题没有普遍的答案。取决于什么质量对您更有价值(可读性 - >可维护性或性能),被调用的次数,它是否真的成为您应用程序中的瓶颈等。
这里很好summarization
答案 3 :(得分:-1)
请勿尝试优化此操作,而不是使用String.format
或StringBuilder.append
而不是使用字符串连接+(尤其是在循环中)。