在Java字符串和StringBuffer中处理文本的类之间的差异
当我声明String
时,如下所示:
String a= "Hello, World!"
我想问的是:String
从数组生成
此外,我了解StringBuffer
是专门用于文本编辑的。如果我使用String
文本在执行程序时无法更改,这意味着如果我想更改或处理文本,我应该使用StringBuffer
是这样吗,伙计们
你可以在下面搜索框中键入要查询的问题!
当我声明String
时,如下所示:
String a= "Hello, World!"
我想问的是:String
从数组生成
此外,我了解StringBuffer
是专门用于文本编辑的。如果我使用String
文本在执行程序时无法更改,这意味着如果我想更改或处理文本,我应该使用StringBuffer
是这样吗,伙计们
# 1 楼答案
存储区
1.1
String
-常量字符串池1.2
StringBuffer
-堆1.3
StringBuilder
-堆可修改
2.1
String
-No(不可变)2.2
StringBuffer
-是(可变)2.3
StringBuilder
-是(可变)线程安全的}-否
3.1
String
-是3.2
StringBuffer
-是3.3{
性能
4.1
String
-快速4.2
StringBuffer
-非常慢4.3
StringBuilder
-快速# 2 楼答案
嘿,你可以改变字符串的值
参见示例
如果我们打印
s
,它会打印出来但是
StringBuffer
是线程安全的,当您在建议使用StringBuffer
的多线程环境中使用String
时如果您想要不可变且不多线程的环境和更好的性能,建议使用
StringBuilder
# 3 楼答案
字符串在java中是不可变的,而StringBuffer和StringBuilder类在需要对字符串进行大量修改时使用
与字符串不同,StringBuffer和Stringbuilder类型的对象可以反复修改,而不会留下大量未使用的新对象
StringBuilder类是从Java5开始引入的,StringBuffer和StringBuilder之间的主要区别在于StringBuilder方法不是线程安全的(不同步)
建议尽可能使用StringBuilder,因为它比StringBuffer快。但是,如果需要线程安全,最好的选择是StringBuffer对象。 范例
您也可以使用
delete(int start, int end), public insert(int offset, int i),replace(int start, int end, String str) functions with string builder and buffer class
有关更多详细信息,请参见此link
# 4 楼答案
如果多用户正在使用字符串,那么最好使用
StringBuffer
(线程安全)如果只有一个用户将编辑,则该字符串最好使用
StringBuilder
(更快,性能更好)另一方面
String
是不可变的,这意味着如果你没有计划编辑你的字符串,你最好选择简单的String
对象,因为通过缓存它会更快# 5 楼答案
您可以使用这两种方法处理文本,但主要区别在于,在执行串联时,“StringBuffer”比“String”快
# 6 楼答案
您始终可以在java中更改字符串,如:
但这需要大量计算,因此应改用StringBuilder: