Java 字符串或StringBuilder的初始化时间较短?哪一个更适合使用?

Java 字符串或StringBuilder的初始化时间较短?哪一个更适合使用?,java,Java,我的程序想要存储字符串,除了按原样存储信息外,不需要对这些字符串执行任何操作 那么以下哪种方式更可取 String s = new String("sagar"); 或 字符串是对中实例的引用。因为这里没有执行任何字符串连接或操作,所以我将使用 String s = "sagar"; 我不会使用 String s = new String("sagar"); 因为这忽略了实习人才库。至于StringBuilder,我更喜欢在操作值时使用它,因为(与String)它是可变的。AStrin

我的程序想要存储
字符串
,除了按原样存储信息外,不需要对这些字符串执行任何操作

那么以下哪种方式更可取

String s = new String("sagar");


字符串
是对中实例的引用。因为这里没有执行任何字符串连接或操作,所以我将使用

 String s = "sagar";
我不会使用

 String s = new String("sagar");

因为这忽略了实习人才库。至于
StringBuilder
,我更喜欢在操作值时使用它,因为(与
String
)它是可变的。

A
String
是对中实例的引用。因为这里没有执行任何字符串连接或操作,所以我将使用

 String s = "sagar";
我不会使用

 String s = new String("sagar");
因为这忽略了实习人才库。至于
StringBuilder
,我更喜欢在操作值时使用它,因为(与
String
)它是可变的。

对于您的问题“以下哪种方式更可取?”

这取决于你的使用情况

如果您确实需要对字符串执行操作,那么
StringBuilder
比普通字符串更有用

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

字符串本质上是不可变的

希望这有帮助

祝你好运。

对于你的问题“以下哪种方式更可取?”

这取决于你的使用情况

如果您确实需要对字符串执行操作,那么
StringBuilder
比普通字符串更有用

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

字符串本质上是不可变的

希望这有帮助

祝你好运。

对于存储-

对于操作-

对于存储-


对于操作-

您应该使用
String s=“sagar”因为它启用字符串文字池

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

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


字符串生成器适用于像concat()这样的字符串操作。

您应该使用
String s=“sagar”因为它启用字符串文字池

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

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


字符串生成器用于使用诸如concat()之类的字符串进行操作。

它基于使用

实际上,在连接时,
字符串生成器
字符串
有效

字符串串联
中,可以使用
字符串生成器


字符串生成器不是线程安全的,因此如果您使用单线程,它是有效的,但它不适用于多线程,并且
字符串是不可变的它基于使用

实际上,在连接时,
字符串生成器
字符串
有效

字符串串联
中,可以使用
字符串生成器


字符串生成器不是线程安全的,因此,如果您使用单线程,它是有效的,但它不适用于多线程,并且字符串是不可变的,除非您在程序中存储了一些超乎寻常的文本,除非你已经证明这是一个瓶颈,否则你真的不应该把注意力放在这样的优化上,除非您已经证明这是一个瓶颈,否则您真的不应该关注这样的优化。StringBuilder的可能副本不是线程安全的。StringBuffer是线程安全的。天哪!错过了这一点,这一点值得否定。感谢您指出@GabrielNegutStringBuilder不是线程安全的。StringBuffer是线程安全的。天哪!错过了这一点,这一点值得否定。感谢您指出@GabrielNegutString s=新字符串(“sagar”);还包含文本,然后它将转到池和堆。不是吗?如果你尝试一下,你会看到
String s=“sagar”;System.out.println(s==“sagar”)
为true,但
String s=新字符串(“sagar”);System.out.println(s==“sagar”)
为false。您能详细说明一下吗?第一个为true,因为
字符串
是实习生池中的一个引用,第二个为false,因为现在有两个
字符串
实例具有相同的值。两个字符串实例具有相同的值??我没给你弄明白s=新弦(“萨加尔”);还包含文本,然后它将转到池和堆。不是吗?如果你尝试一下,你会看到
String s=“sagar”;System.out.println(s==“sagar”)
为true,但
String s=新字符串(“sagar”);System.out.println(s==“sagar”)
为false。您能详细说明一下吗?第一个为true,因为
字符串
是实习生池中的一个引用,第二个为false,因为现在有两个
字符串
实例具有相同的值。两个字符串实例具有相同的值??我没听懂please@fastsnailStringBuilder的实例不适合多个用户使用