2016 - 2024

感恩一路有你

stringbuffer实现原理 string类和stringbuilder的区别?

浏览量:2943 时间:2021-03-12 09:45:05 作者:admin

string类和stringbuilder的区别?

1)变量或不可变:字符串是不可变的,每次执行时都会生成一个新对象。因此,在频繁更改字符串以节省内存时,不使用字符串。

2)是多线程安全的:StringBuilder不向方法添加同步锁,因此它不是线程安全的。StringBuffer和string都是线程安全的

1。StringBuffer和StringBuilder中的方法和函数是完全等效的。2StringBuffer中的大多数方法都是用synchronized关键字修改的,因此它们是线程安全的。如果不进行此修改,StringBuilder将被视为线程不安全。

3. 在单线程程序中,StringBuilder效率更高,因为它不需要锁,也没有多线程安全性,而StringBuffer每次都需要判断锁,效率更低

StringBuffer and StringBuilder

StringBuffer是线程安全的;

StringBuffer不是线程安全的;

当我们的字符缓冲区被多个线程使用时,JVM不能保证StringBuilder的操作是安全的。虽然速度是最快的,但它可以保证StringBuffer的操作是安全的。但是,在大多数情况下,我们在字符缓冲区的操作是单线程的,所以建议使用StringBuilder在这种情况下,这只是速度。

Summary

以上两种方法的用法总结如下:

如果在单线程下操作大量字符串,则使用StringBuilder;

stringbuffer和stringbuilder的区别,底层实现原理?

StringBuilder类直接用于字符串操作,例如,(1)string AA=“123456”(2)AA=“789”(3)StringBuilder text=新建StringBuilder(“123456”,12)(4)文本。追加(“789”)如果您输出AA和文本,您会发现它们的输出内容是相同的。但AA的操作过程实际上是:首先在内存中分配一个地址空间,空间大小为6。然后执行AA=“789”操作,即连接字符串“123456”和“789”,并在内存中重新分配地址。将AA的内存地址指向“123456789”的内存地址。也就是说,实际上在内存中分配了两个空间。第一个内存空间由C#later的垃圾处理机制自动处理。如果我们用一个3-4句的程序来实现这个过程,那么它就不会再分配内存空间了。它在文本的存储空间中运行。这里我们要解释的是,StringBuilder可以在生命变量的过程中自行分配其大小。如果实际内容超过内存空间,它将自动加倍。通过上面的例子,我们可以知道StringBuilder的优点:首先,它不需要每次都分配内存空间。因此,系统不需要处理垃圾;其次,当我们需要对一个字符串进行多次操作时,它的效率远远高于字符串。我希望答案对你有帮助;

stringbuffer实现原理 stringbuffer原理 integer和int比较

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。