String StringBuffer StringBuilder区别与联系

java.lang.String、java.lang.StringBuffer、java.lang.StringBuilder都是字符串类型,是Java中用于处理字符串常用的三个类。它们主要有以下区别和联系:

联系(相同之处):

三者都是final类,不允许被继承。

由于使用频繁,考虑到性能和安全的原因,防止其中的参数被参数修改影响到其他的应用。

区别

1)String类是不可变

String对象一旦被创建,则包含在这个对象中的字符序列是不可更改的,直到这个对象被销毁。

String实现了三个接口:java.io.Serializable、Comparable<String>、CharSequence

2)StringBuffer类代表一个字符序列可变的字符串

StringBuilder可以通过append、insert、reserve、setCharAt、setLength等方法改变其内容。一旦生成了最终的字符串,调用toString方法将其转变为String类型。

3)JDK1.5新增了一个StringBuilder类,与StringBuilder类似,构造方法和方法基本相同。

不同的是StringBuffer是线程安全的,可以不需要额外的同步用于多线程中;StringBuilder是线程不安全的,运行于多线程中就需要使用单独同步处理,但速度比不上StringBuilder,所以StringBuilder性能略高。在不考虑线程安全的情况下,优先考虑使用StringBuilder。

StringBuilder只实现了两个接口java.io.Serializable、CharSequence,相比之下String的实例可以通过compareTo方法进行比较,其他不可以。

三者的运行速度:StringBuilder > StringBuffer > String。

小结

1)String:适用于少量的字符串操作的情况。

2)StringBuffer:适用于单线程下在字符缓冲区进行大量操作的情况。

3)StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况。

猜你喜欢

转载自www.cnblogs.com/sinoaccer/p/12026868.html