【发布时间】:2015-07-05 13:57:17
【问题描述】:
是的,我已经阅读了互联网上所有关于它们差异的材料。这种差异完全基于两者的连接性能。我的问题是,在下面的代码中,哪种技术更好。
public class StringBuilderDemo {
public static void main(String[] args) {
StringBuilder str = new StringBuilder("test");
System.out.println(str.toString());
str = new StringBuilder("Hi ");
System.out.println(str.toString());
}
}
这里是字符串演示
public class StringDemo {
static String str="";
public static void main(String[] args) {
str = "test";
System.out.println(str);
str ="Hi";
System.out.println(str);
}
}
我的假设是因为字符串是不可变的,所以当我们将 "Hi" 分配给 str "test" 时也会保留在内存中(创建的两个字符串对象 "Hi" 和 "test" )。给定值“Hi”“test”被删除。所以在字符串生成器的情况下我们只有一个对象。所以我得出结论,在这些情况下我们应该使用字符串生成器。如果我在这里很幼稚,请纠正我。
【问题讨论】:
-
"new StringBuilder("test")" 创建一个 String 对象 ("test"),StringBuilder 将其转换为一个 char 数组(从内存中),所以在这种情况下,我会说创建一个StringBuilder 比简单地使用“test”更昂贵(至少两个对象)
-
当您执行 strBuild.toString 并创建新的 Strig 时......所以如果它仅对大型应用程序有用......如果您经常使用 toString,小型项目不会节省太多
-
我有一个大型应用程序,我在其中使用字符串来分配和更改值。我应该使用字符串还是某人。
-
顺便说一句,我理解你的观点,tostring 本身是偏移的,最好避免它。谢谢
标签: java string performance stringbuilder