java - String Builder 或 ""+someNumb 对于小案例是否更有效/更正确?

标签 java android

我一直习惯于这样做:

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/

相关文章:

java - 通过 maxLines 参数和字符数剪切字符串

java - 如何在java类中获取Maven项目的依赖列表

android - 如何解决DownloadManager无法打开文件和文件丢失的问题?

android - 我们如何区分 RecyclerView.OnScrollListener 中的用户滚动和 scrollToPosition() 滚动?

java - 具有圆心、半径和法 vector 的圆圆周上的 3d 点

java - 调用最接近的拟合方法

javax.net.ssl.SSLPeerUnverifiedException : peer not authenticated in Tomcat with Apache HttpClient

android - Android Webview 如何将数据发布到 application/x-www-form-urlencoded

Android Studio - transformClassesWithMultidexlistForDebug 错误

android - AsyncQueryHandler 批量插入