
String,StringBuffer,StringBuilder之间的关系
发布日期:2021-05-09 07:41:02
浏览次数:30
分类:精选文章
本文共 1311 字,大约阅读时间需要 4 分钟。
转:
今天我们说说 String-----StringBuffer----- StringBuilder之间的关系
首先熟悉一下三个类:
String: 适用于字符串少量修改 StringBuffer: 多线程频繁修改字符串 StringBuilder:单线程频繁修改字符串String,StringBuffer,StringBuilder的异同
共同点:
1 都属于java.lang包 2 可以互相转换,大都用于字符串的修改不同点:
1.String: 源码中以长度为"传入字符串长度"的char类型数组进行保存,jdk1.9 起以byte类型数组保存参数(传入英文时byte类型比char类型要节省1字节的空间) //看源码StringBuilder,StringBuffer: 源码以长度为"传入字符串长度"+16 固定长度的char类型数组进行保存。//看源码
2.String类是不可变的 (传入的字符串用带有final关键字修饰char类型数组保存,无法被修改) //看源码
StringBuilder,StringBuffer:具有可变性,传入的字符串无final关键字修饰,可修改。(源码用System.arraycopy()方法对char数组
长度不足的情况下可以进行扩容) //看源码3 当频繁处理字符串时,StringBuffer,StringBuilder比String更能
提高性能,节约空间注:上述的异同点要是不懂的可以瞅一下源码哟~~
StringBuffer和StringBuilder的不同点
1.线程安全:
StringBuffer类 (jdk1.0版本):适用于多线程,方法利用synchronized同步锁,牺牲性能换安全StringBuilder类(jdk1.5版本):适用于单线程,没有给方法施加synchronized同步锁,牺牲了安全换性能
2.性能:
StringBuffer:线程安全,性能较差,开销大StringBuilder:线程不安全,性能较好,开销小
相同条件下,使用StringBuilder,比使用StringBuffer能获得10%~15%左右的性能提升
补充一点:
String类型若是在字符常量池进行拼接操作,切记不能利用变量拼接,由于变量的创建在堆中开辟,导致比较的内存地址会出错String str1="AABB";String str2="AA";String result="AA"+"BB";String result1=str2+"BB"; //str2为变量System.out.println(result==result1);
结果为:
总结:
1.String类型具有不可变,StringBuffer和StringBuilder 有可变性 2.String处理少量字符串,StringBuffer和StringBuilder 频繁处理字符串3.StringBuffer:牺牲性能换安全;StringBuilder:牺牲安全换性能
4.StringBuffer:多线程 ;StringBuilder:单线程转:
发表评论
最新留言
很好
[***.229.124.182]2025年04月25日 13时51分17秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux centos7 防火墙设置
2023-01-31
linux centos下 svn 版本控制服务器的搭建
2023-01-31
Linux CFSSL 生成证书
2023-01-31
linux chrom 系统无法读取用户偏好配置无需删除.config配置文件
2023-01-31
linux cmd using
2023-01-31
linux coreseek-4.1安装
2023-01-31
linux core文件设置
2023-01-31
Linux CPU优化性能实战
2023-01-31
Linux CPU管理及监控与性能评估
2023-01-31
Linux CPU负载状态分析实战
2023-01-31
Linux Crontab
2023-01-31
linux crontab 实现每秒执行
2023-01-31
Linux Cron表达式每半个小时执行一次
2023-01-31
linux crw权限,linux中crw brw lrw等等文件属性是什么
2023-01-31
linux curl 调用api
2023-01-31
Linux C程序如何检测WIFI无线USB网卡是否可用?
2023-01-31
Linux C(day01)
2023-01-31
linux debian系统中利用sysv-rc-conf启动服务
2023-01-31
linux deb文件安装
2023-01-31
Linux Dev Enviroment
2023-01-31