String-StringBuilder-StringBuffer 的区别
2024-09-07 06:09:18
String StringBuilder StringBuffer 的区别
String:不可改变的字符串,不能够被修改
(https://baijiahao.baidu.com/s?id=1636970438936163189&wfr=spider&for=pc)
- 创建一个全局变量 str = "123",此时是在堆内存中开辟了空间
- 然后我们“想要的是”让“456” 替换 “123”,但是String 是在堆内存中又为“456”开辟了空间,并重新指向“456”
- 所以“123”这个并没有被改变,只是指向变了
- 建议少量操作字符串时,使用String,大量操作极大消耗内存!
StringBuilder:可变的字符串,线程不安全,效率高
- public final class StringBuilder extends AbstractStringBuilder implements java.io.Serializable, CharSequence(https://blog.csdn.net/wangyangzhizhou/article/details/80446222)
- 线程不安全,建议单线程使用
- 效率高,修改比StringBuffer快
- new StringBuilder(); 构造一个字符串生成器,其中没有字符,初始容量为16个字符(Constructs a string builder with no characters in it and aninitial capacity of 16 characters)
StringBuffer:可变的字符串,线程安全,效率低
- public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable,CharSequence(https://blog.csdn.net/wqqqianqian/article/details/80001256)
- append 是用 synchronized 修饰的,所以是线程安全的
- 主要因为StringBuffer很多方法都是synchronized 修饰的(https://blog.csdn.net/exodus520/article/details/90415568),所以效率低!
最新文章
- 模板:正则替换之后生成标准的php文件 然后include该文件
- linux 读写锁应用实例
- PHP版本VC6与VC9、Thread Safe与None-Thread Safe等的区别
- python核心编程第六章练习6-8
- 修改linux文件/文件夹权限
- UVA11361 Investigating Div-Sum Property(数位dp)
- java两个音频进入巩固期 玩的同时类似的伴奏
- [设计模式-创建型]工厂方法(Factory Method)
- 重写NSArray与NSDictionary的descriptionWithLocale方法
- c/s与b/s 动态网站与静态网站 (网站编码统一“UTF-8”)
- 测者的测试技术手册:自动的自动化框架EvoSuite集成Cobertura得到可视化的代码覆盖报告
- 使用docker搭建centos虚拟机
- concurrent.futures性能阐述
- 同步调用异步方法how-would-i-run-an-async-taskt-method-synchronously
- 步步为营-69-Razor基础
- DBeaver数据库管理工具连接Sybase数据库
- 高质量C++/C编程指南
- UICollectionView设置首个cell默认选中(二)
- MVC下使用Areas
- 爬虫验证码处理与IP处理
热门文章
- MTK Android 源码目录分析
- Linux服务器架设篇,DNS服务器(三),正反解区域的配置
- Java第二十二天,异常
- jvm入门及理解(三)——运行时数据区(程序计数器+本地方法栈)
- 通过GSM模块发送经纬度求救信息。
- 并查集---体会以及模板&;&;How Many Tables - HDU 1213
- Java日志管理:Logger.getLogger()和LogFactory.getLog()的区别(详解Log4j)
- 关于TOMCAT中的两个Web.xml
- 第十一节:configParse模块
- jQuery+ajax实现滚动到页面底部自动加载图文列表效果