首页 > 其他分享 >String,StringBuffer,StringBuilder有什么区别?

String,StringBuffer,StringBuilder有什么区别?

时间:2024-09-05 11:15:07浏览次数:3  
标签:String 对象 StringBuffer 线程 StringBuilder 字符串

1.可变性:
String类使用了final关键字字符数组保存字符串,所以String对象是不可变的,也就是我们说的常量。而StringBuffer和StringBuilder均继承了AbstractStringBuilder类,且它们的构造方法都是调用父类的构造方法。AbstractStringBuilder类中也使用了字符数组保存字符串,但是没有使用final关键字,所以StringBuffer和StringBuilder是可变的
2.线程安全性:
String对象是不可变的常量,所以它是线程安全的。StringBuffer和StringBuilder的公共父类中定义了一些操作字符串的方法。而StringBuffer对这些方法添加了同步锁,所以是线程安全的。StringBuilder并没有添加同步锁,所以是非线程安全的。
**3.性能:
修改String 的时候,都会重新创建String对象,然后指针指向新的对象。而StringBuffer和StringBuilder则是对对象本身进行操作,不会生成新的对象并改变对象引用。而StringBuilder相对于StringBuffer来说性能之提高了10%左右,但StringBuilder是线程不安全的。
所以,如果单线程操作大量字符串数据则使用StringBuilder,duo线程操作大量字符串则使用StringBuffer,少量字符串操作则使用String即可。

标签:String,对象,StringBuffer,线程,StringBuilder,字符串
From: https://www.cnblogs.com/stone-999/p/18397996

相关文章

  • 发送到PO/PI后查看报文发现会在末尾多给一个空格,后来发现基本上是数字、金额等字段,这
    PO报文发出去数字,金额等字段统统后面都会带有空格但是在abapdebugger看值看不出字段后面有空格<CGHTMXLIST><CGWXMC/><ZJTBM/><XQSL>1.000</XQSL><MEINS>XIA</MEINS><XQGJ>20000000.00</XQGJ><JHAMOUNT>20000000.00</JHAMOUNT><......
  • STL之string
    目录string常见的构造迭代器正向迭代器使用方法反向迭代器const正向/反向迭代器capacity接口reserve  resizestring类对象的修改操作 insert头插中间位置插入erase仅翻转字母isalpha 字符串中第一个唯一字符string常见的构造strings1("hello");str......
  • c++ string类 重载实现(续)9月3日
    #include<iostream>#include<string>#include<cstring>classMystring{ private: intlen; char*str; public: Mystring() { str=nullptr; len=0; } Mystring(constchar*s) { len=strlen(s); str=newchar[len+1]; strcpy(s......
  • SQLServer2017对象名STRING_SPLIT无效
    SQLServer2017在使用“STRING_SPLIT”方法时报错:  1select*fromSTRING_SPLIT('1,2,3,4,5',',')  12消息208,级别16,状态1,第3行对象名'STRING_SPLIT'无效。原因STRING_SPLIT方法要求数据库的兼容级别至少为130。当级别小于130时,SQ......
  • string字符串
    string字符串1.翻转字符串#include<bits/stdc++.h>usingnamespacestd;intmain(){ strings; getline(cin,s); /*方法1.reverse搭配迭代器 reverse(s.begin(),s.end()); cout<<s; */ /*方法2.反着输出 for(inti=s.length()-1;i>=0;i--){ cout<<s[i]; }*/ //方法3.一半交换 ......
  • 20240903mystring进阶
    #include<iostream>#include<cstring>#include<stdexcept>//Forstd::out_of_rangeclassMystring{public://默认构造函数Mystring():str(nullptr),len(0){}//有参构造函数Mystring(constchar*s){len=strlen(......
  • 【已解决】Invalid value type for attribute ‘factoryBeanObjectType‘: java.lang.
    一、问题描述Invalidvaluetypeforattribute‘factoryBeanObjectType‘:java.lang.String二、解决方案更新本地的Mybatisplus版本<dependency>  <groupId>com.baomidou</groupId>  <artifactId>mybatis-plus-spring-boot3-starter</artifactId> ......
  • CF 2100-2400 strings 乱做
    CF1995DCases显然如果选了某个字符那么不妨选它出现的所有位置。check方式等价于相邻两个选择的位置间距\(\lek\),等价于连续\(k\)个必须选一个(最后一个必须选)枚举位置维护字符集是做不了的,状态数\(O(n2^c)\)无法优化考虑枚举字符集\(s\)。设原串连续\(k\)个字符的字......
  • 使用C++,仿照string类,实现myString
    类由结构体演化而来,只需要将struct改成关键字class,就定义了一个类C++中类和结构体的区别:默认的权限不同,结构体中默认权限为public,类中默认权限为private默认的继承方式不同,结构体的默认继承方式为public,类的默认继承方式为private//定义格式class类名{public:......
  • JAVA List<Map<String, Object>> sort 多个排序写法
     基本方法/***排序=**@paramlist*@paramsort_key*@return*/publicstaticList<Map<String,Object>>sort(List<Map<String,Object>>list,Stringsort_key,Booleanasc,Stringsort_key2,Boole......