是的,我已经阅读了互联网上有关其差异的所有资料。这种差异完全基于两者的连接性能。我的问题是在下面的代码中哪种技术更好。
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”被删除。因此我们在字符串构建器的情况下有一个对象。所以我总结说在这些情况下我们应该使用字符串构建器。如果我在这里幼稚,请纠正我。
答案 0 :(得分:1)
在您的情况下,普通String
更好。你应该在大的for循环中使用StringBuilder
,你要在字符串中添加很多东西。
问题是字符串是 imutable ,当您将变量分配给字符串时,java会查看您已经创建的表格。如果存在具有相同内容的内容,则会获得对该String的引用。但是,无论何时链接String的内容,都会创建一个新对象,因此在大循环中性能会降低。
StringBuilder 并非如此,它是 mutable ,这意味着您可以修改它的对象并且不会创建新对象,而是只需在需要时自行调整大小。
答案 1 :(得分:1)
你是对的,String是不可变的。意味着您无法直接向其内存内容添加内容,这意味着您需要额外的内存来访问它。但是,您的应用程序似乎不会占用大量内存,因此您可以直接使用String。
答案 2 :(得分:0)
是的,当你加入更多的字符串或者你创建一个字符串时,隐藏着一个字符串生成器。
对于简单的字符串,性能没有区别,但是如果你需要连接(或添加)更多的字符串,你应该使用字符串生成器。
答案 3 :(得分:0)
这是非常基本的事情。你应该使用' String'不是' StringBuilder'在你的情况下。