网站首页 > 精选教程 正文
接下来这个问题,当我再次复习string、StringBuffer和StringBuffer的区别时,我其实并不想动手写。大家好,我是磊哥,一位有着十多年工作经验的程序员。首先请点赞并关注我,以便以后更好地学习。
为什么我不想写呢?因为这个问题已经被问过很多次了,就像我之前问OOP思想一样。现在人们不再问OOP思想了,但仍有人询问string、StringBuffer和 StringBuilder的区别。
那么它们之间的区别是什么呢?
·首先,string是final类型的,因此每次修改时都会创建一个新值,因此效率较低。为了解决string拼接问题,string buffer应运而生,它解决了string拼接的问题,并提供了源代码。
通过查看它的源代码,我们可以看到它的append方法使用了内置的锁进行线程安全的同步。因此,StringBuffer没有线程安全问题。
·但是,它也存在其他问题。问题是什么?由于整个方法都被synchronized修饰,例如hash table和string buffer,它们的方法中都使用了内置锁进行同步。
因此,JDK不建议使用hash table,因为它使用的锁太粗暴了,简单来说就是太粗暴了,而且锁的粒度太大,因此性能不高。建议使用JavaScript,它和StringBuffer有相同的命运。StringBuffer实际上并不那么惨,因为在某些情况下需要保证数据的安全性,并且需要进行数据拼接,因此只能使用StringBuffer。
如果我在单线程下想让它的性能更快一些,应该怎么办呢?因此出现了Stringsource,那么Stringsource和Stringsource版本的区别是什么呢?通过查看方法,我们可以看到它们几乎完全相同。我使用的是StringBuffer,因为它使用了B区的高效率,在JDK中,它的这个方法与Buffer的方法相同,只有StringSource没有加同步,但它们之间的区别很小。因此,我们应该如何记忆这些区别呢?
首先,StringBuffer的出现是为了解决字符串不能拼接的问题。由于String大曲使用了同步,因此它的性能较低。因此,在单线程环境下,string和Builder是为了解决StringBuffer在单线程环境下的性能问题而设计的。因此,它们之间的关系是紧密相连的。按照这个逻辑记忆,我们可以轻松地记住它们的区别。
这是它们的生成器源码,其中包含了它们之间的区别。
猜你喜欢
- 2024-11-17 java面试题及答案2022,java2022最新面试题及答案
- 2024-11-17 舔狗都内卷了!这10万+Java面试题总结+答案链接你还不来看吗
- 2024-11-17 50道Java面试题(java高级面试题及答案)
- 2024-11-17 5 个刁钻的 String 面试题!你都遇到过哪些?
- 2024-11-17 Java 最常见面试题全解析:反射、Java Web
- 2024-11-17 好程序员Java培训分享20个Java程序员基础题
- 2024-11-17 干货来了!| 125 条常见的 java 面试笔试题大汇总 |(50/125)| 日更
- 2024-11-17 这是我见过最有用的java面试题,强烈推荐(含答案)
- 2024-11-17 Java最全面试题之Spring篇(java面试题 spring)
- 2024-11-17 作为一名程序猿,你不可不知的Java基础知识的三十个经典问答
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)