JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

Java常见面试题:String(java常见的面试题目)

wys521 2024-11-17 02:54:22 精选教程 25 ℃ 0 评论

接下来这个问题,当我再次复习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在单线程环境下的性能问题而设计的。因此,它们之间的关系是紧密相连的。按照这个逻辑记忆,我们可以轻松地记住它们的区别。

这是它们的生成器源码,其中包含了它们之间的区别。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表