Java 中CharSequence、String、String

2016-11-26  本文已影响0人  柠檬师傅

之前对这四个String、StringBuilder、StringBuffer、CharSequence的认识不够清晰,现在再重新深入的去了解下他们。


首先CharSequence可以说是另外三个的老大,CharSequence本身是一个接口(去掉了原本的注释):

/**
 * This interface represents an ordered set of characters and defines the
 * methods to probe them.
 */
public interface CharSequence {

   
    public int length();

  
    public char charAt(int index);

 
    public CharSequence subSequence(int start, int end);

   
    public String toString();
}

这就是CharSequence的源码,String、StringBuilder、StringBuffer都是实现了CharSequence这个接口而来的,所以他们都有这四个方法。上面的源码中可以看到最后一个方法toString()方法,说明StringBuilder、StringBuffer都可以转成String。

StringBuilder和StringBuffer我们一般都会用来拼接字符串,StringBuilder和StringBuffer的初始大小都是16,我们也可以按需求来自己定义大小。StringBuffer是线程安全的,StringBuilder是线程不安全的,所以单线程使用StringBuilder多线程使用StringBuffer,StringBuilder的性能也会高于StringBuffer。

我们平时有很多时候可能会直接使用加号来进行字符串拼接,如果字符串是已知的那么会在编译期以StringBuilder#append的形式编译,但是如果字符串是获取的是未知的,那么会无端创建很多不必要的对象,占用内存,所以尽量不要使用加好来拼接字符串。

上一篇 下一篇

猜你喜欢

热点阅读