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的形式编译,但是如果字符串是获取的是未知的,那么会无端创建很多不必要的对象,占用内存,所以尽量不要使用加好来拼接字符串。