java中String,StringBuilder ,StringBuffer的区别?它们的各自优点在哪?

来源:互联网 发布:ps cs6序列号 mac版 编辑:程序博客网 时间:2024/06/11 05:29

1.String:字符串常量,消耗性能,浪费空间。

*String不是基本数据类型

*String是final类,不可以被继承。不可改变的对象,若已经存在的String变量,在进行赋值则是新创建一个对象。每次对String所修饰的变量修改时等同于创建新的String对象

2.StringBuilder:字符串常量,非线程安全,不支持高并发,效率高

*是jdk1.5后用来替换stringBuffer的一个类,大多数时候可以替换StringBuffer。

和StringBuffer的区别在于Stringbuilder是一个单线程使用的类,不支持线程同步,所以比StringBuilder的速度快,效率高。是线程非安全的。

3.StringBuffer:字符串常量,线程安全,效率慢

*一个类似于 String 的字符串缓冲区,对它的修改的不会像String那样重创建对象。

*StringBuffer用了安全锁(synchronized)也就是线程安全。

*StringBuffer和StringBuilder都有其一些方法可以对字符串追加(append),插入(insert),截取(substring)等

StringBuilder可以操作StringBuffer,但是StringBuffer不可以操作StringBuilder

两者共同点:

*都能对字符串修改

*StringBuffer 和 StingBuilder 都继承自 AbstractStringBuilder(抽象类)

阅读全文
1 0
原创粉丝点击