我的程序想要存储Strings
,除了存储信息之外,不需要对其进行任何操作。
那么以下哪种方式更受欢迎?
String s = new String("sagar");
或
StringBuilder sb = new StringBuilder("sagar");
答案 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 builder
比Strings
有效。
在String Concatenation
中,您可以使用String builder
。
字符串构建器不是线程安全的,所以如果你在单线程上工作它是有效的,但它不适用于多线程,Strings
是不可变的
答案 4 :(得分:0)
存储 - String
操纵 - StringBuilder