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”即可;
之所以不直接使用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”即可;
相关文章推荐
- CharSequence 与String的区别
- CharSequence与String的区别
- Java String之String和CharSequence、StringBuilder和StringBuffer的区别
- CharSequence与String的区别
- Java 基础之 String、StringBuilder、StringBuffer、CharSequence 区别
- android: CharSequence和String的区别
- CharSequence与String的区别
- String 和 CharSequence 关系与区别
- CharSequence与String的区别
- String与CharSequence的区别与联系
- CharSequence与String的区别
- CharSequence 与 String的区别
- String 与CharSequence的区别
- String详解, String和CharSequence区别, StringBuilder和StringBuffer的区别 (String系列之1)
- String详解, String和CharSequence区别, StringBuilder和StringBuffer的区别 (String系列之1)
- CharSequence与String的区别
- Java String之String和CharSequence、StringBuilder和StringBuffer的区别(3)
- String详解, String和CharSequence区别, StringBuilder和StringBuffer的区别
- CharSequence的getText()与String的getString()区别和为什么加""
- CharSequence与String的区别