String或StringBuilder,初始化时间较短?哪一个更适合使用?

时间:2014-11-01 06:37:52

标签: java

我的程序想要存储Strings,除了存储信息之外,不需要对其进行任何操作。

那么以下哪种方式更受欢迎?

String s = new String("sagar");

StringBuilder sb = new StringBuilder("sagar");

5 个答案:

答案 0 :(得分:3)

String是对String intern pool中的实例的引用。由于您未在此处执行任何字符串连接或操作,因此我将使用

 String s = "sagar";

我不会用

 String s = new String("sagar");

因为忽略了实习池。对于StringBuilder我更喜欢在操纵值时(因为与String相反),它是可变的。

答案 1 :(得分:1)

对于您的问题"以下哪种方式更受欢迎?"

这实际上取决于您的使用情况。

如果您需要对字符串进行真正的操作,那么StringBuilder比普通字符串更有用。

此外StringBuffer也是线程安全的,因此可以在多线程环境中有效使用。

字符串本质上是不可变的。

希望这有帮助!

祝你好运。

答案 2 :(得分:1)

您应该使用String s = "sagar";,因为它启用字符串文字池。

什么是字符串文字池? - 与任何其他对象创建一样,字符串创建/分配是一项耗费内存且耗时的操作。因此,每当创建一个字符串时,它将引用类似对象的字符串池。如果存在这样的字符串,那么它将引用相同的字符串。

此功能是可行的,因为字符串在java中是不可变的。最终字符串文字池将提高性能。

String Builder适用于使用像concat()这样的字符串进行操作。

答案 3 :(得分:1)

它基于使用。

实际上,在连接时String builderStrings有效。

String Concatenation中,您可以使用String builder

字符串构建器不是线程安全的,所以如果你在单线程上工作它是有效的,但它不适用于多线程,Strings是不可变的

答案 4 :(得分:0)

存储 - String

操纵 - StringBuilder