CharSequence和String的区别

          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”即可;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值