Good Luck To You!
顶部右侧自定义文字
广告位 后台主题配置管理

网站首页> stringbuilder和stringbuffer速度 正文

stringbuilder和stringbuffer区别

mosho 2023-12-31 462 ℃

目录一览:

String,StringBuffer和StringBuilder的区别

String是不可变字符序列,即一旦String对象被创建,就不能再对其内容做任何修改。每次对String的操作都会生成新的String对象。因此,当需要对字符串内容进行频繁的修改时,会产生大量的无用String对象,导致系统性能的浪费。

StringBuffer是可变字符序列,即可以对其内容进行修改。它是线程安全的,因为它的所有公共方法都使用了synchronized关键字进行了同步。但是,由于它的所有方法都是同步的,因此在多线程环境下,它的效率会比较低下。

StringBuilder也是可变字符序列,和StringBuffer类似,但是它是非线程安全的。它的所有方法都没有使用synchronized关键字进行同步,因此在单线程环境下,它的效率会比StringBuffer更高。因此,当不需要考虑线程安全的情况下,推荐使用StringBuilder。

stringbuffer和stringbuilder的异同

stringbuffer 一下简称buffer stringbuilder 以下简称builder buffer 是线程安全的,builder是不安全的。 buffer 速度慢,builder速度快。 其实在string ss= “ss”;的过程中,就是调用两次stringbuffer,StringBuffer sa = new StringBuffer(); sa.append("s"); sa.append("a"); sa.toString();

String和StringBuffer是什么呢

三者区别

String 不可变字符串,另外两个是可变的。

StringBuffer 可变字符串,是线程安全的内部用的synchronized 做的线程安全。

StringBuilder 可变字符串,非线程安全。

从类关系图看

String类图

StringBuffer类图

StringBuilder类图

CharSequence

CharSequence中的方法

可以看到String、StringBuffer与StringBuilder都实现了CharSequence接口。

CharSequence是一个接口,表示char值的一个可读序列。此接口对许多不同种类的char序列提供统一的自读访问。此接口不修改该equals和hashCode方法的常规协定,因此,通常未定义比较实现CharSequence 的两个对象的结果。

CharSequence与String都能用于定义字符串,但CharSequence的值是可读可写序列,而String的值是只读序列。

对于一个抽象类或者是接口类,不能使用new来进行赋值,但是可以通过以下的方式来进行实例的创建:CharSequence cs = "pine";

Appendable

Appendable接口中的方法

明显能够看到主要是用于定义拼接方法的接口类。

下面看一个append实现方法。

从方法中不难看出为啥我们拼接为NULL的对象是为啥拼接的字符串是“null”了。

另外Formatter相关的类也会实现Appendable接口。

String和StringBuffer是什么呢

stringbuilder和stringbuffer区别

区别1、StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,2、只是StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰,因此是线程安全的,而 StringBuilder 没有这个修饰,可以被认为是线程不安全的。

stringbuilder和stringbuffer区别

3、在单线程程序下,StringBuilder效率更快,因为它不需要加锁,不具备多线程安全而StringBuffer则每次都需要判断锁,效率相对更低

Tags:

月照花影移推荐
最近发表
猜你喜欢
标签列表
网站收藏