我有一个遗留的Java文件,它使用字符串连接来构建巨大的字符串对象。这是一个严重的性能问题。是否有一种方法可以执行以下操作
String test="I am a very bad programmer"
+"to use concatenation"
+"Instead of StringBuilder"
+" or StringBuffer";
至
StringBuilder strBuilder= new StringBuilder();
strBuilder.append("I am a bad programmer");
strBuilder.append("to use concatenation");
strBuilder.append("Instead of StringBuilder");
strBuilder.append(" or StringBuffer");
String str= strBuilder.toString();
基本上我需要一个java中的 stub ,只是为了将字符串实例化作为输入并转换为StringBuilder。过去有人尝试过这个吗?
最佳答案
不,这不是性能问题。例如,如果您内联连接字符串(就像您所展示的那样)而不是使用循环,则编译器会自动将 +
转换为使用 StringBuilder
。查看java.lang.String
的文档
The Java language provides special support for the string concatenation operator ( + ), and for conversion of other objects to strings. String concatenation is implemented through the StringBuilder(or StringBuffer) class and its append method. String conversions are implemented through the method toString, defined by Object and inherited by all classes in Java. For additional information on string concatenation and conversion, see Gosling, Joy, and Steele, The Java Language Specification.
更进一步 - 编译器可能会利用这些都是字符串常量的事实,甚至在运行时之前将它们连接起来 ( JLS references )
关于java - java 将字符串连接成 StringBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5430168/