您的位置:首页 > 产品设计 > UI/UE

CharSequence和String的区别

2017-03-05 15:52 141 查看
          CharSequence是一个字符序列接口,实现了String、StringBuffer、StringBuilder类,所有使用CharSequence字符序列接口类型的程序都看可使用其不同的实现,简单的说,就是子类类型,比如常见的String类型,所以调用时大部分情况下输入的都是String类型数据。

       之所以不直接使用String类型作为参数类型,是因为CharSequence接口还有其他的已实现的类,就是前面提到的StringBuffer、StringBuilder,众所周知,String对象不可变,而这两者可变,所以在构造字符串时往往用StringBuffer、StringBuilder,
若在JDK指定的方法中直接用String做参数类型,就无法使用提供的方法,而StringBuffer StringBuiilder转换成String再转换回来会用去很长时间。

       另外,需要提到一点,CharSequence是字符序列, 所以它的实现类(之前说的三个)本质上都是通过字符数组实现的。

        顺便说说StringBuffer和StringBuilder的区别

         这两者都是可变的字符序列,都实现CharSequence接口,不过,StringBuffer是线程安全,StringBuilder是非线程安全。

public final class
StringBuilder
extends
Object
implements
Serializable,
CharSequence
public final class
StringBuffer
extends
Object
implements
Serializable,
CharSequence
           

网上说这两个类都继承AbstractStringBuilder,我在jdk1.6、1.7、1.8找过,根本不存在这个类,它们继承的是Object。

如有错误地方或不同意见,请留言,谢谢;

CharSequence接口           请参考:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh         Ctrl+F查找“CharSequence”即可;

StringBuffer                     请参考:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh         Ctrl+F查找“StringBuffer”即可;

StringBuilder                   请参考:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh          Ctrl+F查找“StringBuilder”即可;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息