Java 中String,StringBuffer,StringBuilder的区别

来源:互联网 发布:轻而易举瓷砖设计软件 编辑:程序博客网 时间:2024/05/17 06:08

面试中经常被问及的一个问题,关于三者的区别可以从两个方面区分,jdk源码中都有体现

  1. 是否可变
    String
    从String源码可以看出来,String使用char数据来存储字符串的,但是是用final关键字修饰的,也就是不可变的,同样也可以知道,String并不是Java的基本类型
    StringBuiler

StringBuffer


AbstractStringBuilder
StringBuffer与StringBuiler都是继承AbstractStringBuilder,也是用char数组来存储字符串,但是内容是可变的。
2. 是否线程安全
String 内容是不可变的,也就是常量,明显是线程安全的,
StringBuffer
从StringBuffer源码可以看出,方法都是加了同步关键字的,所以StringBuffer是线程安全的
StringBuiler
而StringBuiler的方法没有同步关键字,也就是线程不安全的


以上两点是三者的区别,面试的时候可以使用,但是平常在项目中我们具体如何使用可以根据具体的需求

如果是对线程安全没有要求,且字符串有变化的,那么StringBuiler是最理想的
如果对线程安全有要求,且字符串有变化的,那么StringBuffer是最理想的
如果是常量定义的话,String是最理想的。

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