首页 > 其他分享 >String,StringBuffer、StringBuilder的区别

String,StringBuffer、StringBuilder的区别

时间:2024-11-13 10:58:23浏览次数:1  
标签:String StringBuffer 性能 线程 StringBuilder 字符串

1、可变性
String:是不可变的、其内部是fianl修饰的,每次变更都会创建一个新的对象。
StringBuffer、StringBuilder是可变的,字符串的变更是不会创建新对象的。
2、线程安全性
String是不变的,线程安全的。
StringBuffer是线程安全的,每次操作方法是都会添加synchronized同步关键字。
StringBuilder不是线程安全的。
3、性能方面
String的性能最低,因为每次修改字符串时都会创建新对象和内存。
StringBuffer因为是可变的,可以直接修改,但是因为添加了synchronized重量级锁,所以性能不如StringBuilder。
StringBuilder性能来说最优。
4、存储方便
String是存储在字符串常量中,而Stringbuffer和StringBuilder都存储在堆内存中。

标签:String,StringBuffer,性能,线程,StringBuilder,字符串
From: https://www.cnblogs.com/xiaowanghaha/p/18543449

相关文章

  • Java常用方法:StringUtils.isNotBlank()、StringUtils.isEmpty()、去除空格的函数、手
    Java常用方法:StringUtils.isNotBlank()、StringUtils.isEmpty()、去除空格的函数、手机号中间4位换成*、判断字符是否为数字要使用工具类StringUtils,首先得导入依赖<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><ve......
  • HDU - 4821 String
    给定字符串\(S\)。求有多少长\(M\timesL\)的子串,使得将其划分成\(M\)个长度为\(L\)的字符串\(S_1,S_2,\dotsS_M\)互不相同。\(1\leM\timesL\le|S|\le10^5\)。从\(0\)起下标。显然这些字符串的起始位置在模\(L\)意义下相同。不妨枚举这个值\(r\in[......
  • JAVA重写(override)toString方法
    1.toString()方法一般出现在System.out.println(类名.toString());toString()是一种自我描述方法本身返回的是getClass().getName()+“@”+Integer.toHexString(hashCode());也就是类名+@+hashCode的值重写toString()只会对类生效,并不能字符串生效; 2.为什么要重......
  • 深入计算机语言之C++:STL之string的认识与使用
    ......
  • String、StringBuffer、StringBuilder的区别
    在Java中,​​String​​​、​​StringBuffer​​​、和​​StringBuilder​​都是用于处理字符串的类,但它们之间存在一些关键差异,主要涉及可变性、线程安全性和性能: 1.String:-不可变性:​​String​​对象一旦被创建,其内容就不能改变。任何对​​String​​的操作,比如拼接......
  • String、StringBuffer、StringBuilder的区别
    在Java中,​​String​​​、​​StringBuffer​​​、和​​StringBuilder​​都是用于处理字符串的类,但它们之间存在一些关键差异,主要涉及可变性、线程安全性和性能: 1.String:-不可变性:​​String​​对象一旦被创建,其内容就不能改变。任何对​​String​​的操作,比如拼接......
  • JAVA中StringBuilder介绍与实现
    StringBuilder是Java中的一个类,它在java.lang包下。StringBuilder用于创建可变的字符序列,即可以在不生成大量临时对象的情况下修改字符串。StringBuilder是线程不安全的,因此它的操作速度比StringBuffer快,但在多线程环境下需要额外的同步措施。StringBuilder提供......
  • MissingServletRequestParameterException(Required String parameter ‘code‘ is not
    文章目录1、控制台2、ExceptionHandle3、anti-counterfeiting.js4、AntiFakeController5、解决方案方案一:修改前端请求格式方案二:拼接URL参数(适用于`GET`请求或带参数的`POST`请求)方案三:后端改用`@RequestBody`总结1、控制台2024-11-0614:45:40.557ERROR......
  • C++中string字符串的基础操作,学习
    string字符串常用函数substring()string.length()&&string.size()string.find()string.replace()string.substr()string初始化和声明#include<bits/stdc++.h>usingnamespacestd; intmain(){stringstr1;//空字符串stringstr2="hello,w......
  • 哈希算法(开散列)- 支持string(this指针指向的理解)
    一.开散列的定义闭散列(开放地址法)的缺点是线性探测和二次探测都会存在哈希冲突的问题,数据越多冲突就会越明显,导致查询数据的时间复杂度大幅度提升个人思路:创建一个指针数组,当某个位置要插入一个数据,就再创建一个数组,指针数组对应位置的指针指向此数组的首元素(数组地址),......