CharSequence 和String 之间有什么区别?

CharSequence[]String[]什么区别?

string实现CharSequence接口。 CharSequence是由String实现的,也是CharBuffer,Segment,StringBuffer,StringBuilder。

所以一个String []和一个CharSequence []实质上是一样的。 但CharSequence是抽象的,String是实现。

顺便说一下,'[]'表示一个对象数组 。 所以String[]是一个string数组。 而String本身就是一个字符数组。

CharSequence表示一个字符序列的接口,所有实现它的类都有相同的操作。 但是, CharSequence并不保证序列是否可变。 所以,你可以有一个不可变的实现类,比如StringBuilderStringBuffer

另外, CharSequence并没有细化equals()或者hashCode()方法的通用实现,所以不能保证实现CharSequence的不同类的对象会比较相同,即使它们持有的底层序列是相同的。 所以,给出:

 String seq1 = "hello"; StringBuilder seq2 = new StringBuilder("hello"); StringBuffer seq3 = new StringBuffer("hello"); 

这三个使用.equals()之间的比较Java 1.6上返回false ,但我不能find任何保证,这将不会改变(虽然这可能是相当不可能的)。

CharSequence[]String[]只是它们各自types的数组。

编辑 :这个的实际结果是比较CharSequence的平等,你必须使用他们的toString()方法,并比较结果的String s,因为这是保证返回true如果底层序列是相同的。

CharSequence是一个接口。 string是不可变的字符序列,并实现CharSequence接口。 CharSequence []和String []只是CharSequence和String的数组。

这意味着无论你在哪里看到CharSequence,都可以传递一个String对象。

CharSequence是一个接口。 string是一个实现CharSequence接口的类。 这意味着一个String对象作为CharSequence对象传递。 有不同的类实现CharSequence接口。 它们都定义了与接口CharSequence提供的方法签名(或抽象方法?)相关的方法。

CharSequence表示一组有序的字符,并定义检查这个字符集的方法。 这是接口,这个接口的一个实现是String类。

有关更多信息,请参阅Java API文档。 另外,本教程可能会帮助您: http : //download.oracle.com/javase/tutorial/

这里是我的图显示如何String是实现CharSequence 接口的几个具体类之一。

特别是, StringBuilder通常被用作连接String对象和+运算符的更快的替代方法,在这里不需要线程安全。

方括号表示一个数组。 所以, String[]是一个String对象的数组,而CharSequence[]是一个对象数组,它可以是也可以不是String对象,但肯定是实现CharSequence接口的对象。

在这里看到我的答案和我的答案在这里进行更多的讨论。