Java中String,StringBuffer和StringBuiled的区别

来源:互联网 发布:艾克里里用什么软件 编辑:程序博客网 时间:2024/04/30 14:35

万丈高楼平地起,它的宏伟取决于你的地基稳不稳!

在Java的学习中亦是如此。

总结自己亲身的面试经验,这是一个老生常谈的问题,即面试官会说一下String,StringBuffer和StringBuiled的区别,或者做笔试题。

1.是否可变

我们知道,Java中所有的类都默认继承至Object类,他是所有类的基类。查看jdk源码得知String类用final关键字修饰,(final修饰的类不可被继承,方法不可被重写,变量不可变),所以,String类型的变量值一旦被创建便不可修改。StringBuffer和StringBuiled是可变的。

2.是否线程安全

StringBuffer和StringBuiled都继承于AbstractStringBuilder类,在AbstractStringBuilder中是使用字符数组保存字符串,她俩可以共用AbstractStringBuilder里面公共的方法和变量,这是他们的共同点,不同点在于,打开StringBuffer类的源码,可以看到他里面的方法都默认加了同步锁或者对调用的方法加了同步锁,所以他是线程安全的,为了防止线程中的冲突,适合于多线程开发。而StringBuiled没有,所以是线程不安全的。

3.性能速度

处理的速度,StringBuilder是最好的,其次是StringBuffer,而最后是String。所以,操作少量数据用String,大量数据单线程用StringBuiled.多线程用StringBuffer。



以上是个人理解,仅供参考,如有不对,请批评指正

1 0