我一直习惯于这样做:
int num = 12;
String text = ""+12;
很长一段时间,但我发现对于大量添加来说,这是一种非常低效的机制。
对于这些情况,我通常会这样做:
// this is psuedo code here..
FileInputStream fis = new FileInputStream(fis);
StringBuilder builder = new StringBuilder();
while(input.hasNext()) {
builder.append(input.nextString());
}
我的问题是:在为 Android 编码时(与一般 Java 情况相比)在小情况下性能权衡是否值得使用 String Builder,或者在这些小情况下是否有任何其他原因更喜欢 String Builder?在上面介绍的简单案例中,似乎有很多额外的输入。我还怀疑(虽然我还没有确认)简单情况下的内存分配可能不值得。
编辑:假设附加的值在编译时未知,I.E.它们不是常量。
上面的“”+12 的例子也是一个选择不当的例子。假设它是
String userGeneratedText = textInput.getText().toString();
int someVal = intInput.getInt();
String finalVal = userGeneratedText+someVal;
最佳答案
如果您的代码如此处所示很短:
String text = "foo" + 12;
编译器会自动替换拼接以使用StringBuilder
:
String text = new StringBuilder().append("foo").append(12).toString();
所以不要担心这段代码的低效,因为它会比您预期的更好。
如果您需要附加非常大的 String
或者您不知道要连接多少对象(字符串、整数、 boolean 值等),请使用 StringBuilder
就像您在第二个代码示例中所做的那样。
这里有一个关于字符串连接如何工作的更深入的解释:http://blog.eyallupu.com/2010/09/under-hood-of-java-strings.html
关于java - String Builder 或 ""+someNumb 对于小案例是否更有效/更正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21556322/