Quelle est la différence entre CharSequence[]
et String[]
?
Réponses
Trop de publicités?La chaîne met en œuvre la CharSequence interface. CharSequence est mis en œuvre par la Chaîne, mais aussi CharBuffer, Segment, StringBuffer, StringBuilder.
Ainsi, un String[] et un CharSequence[] est essentiellement la même. Mais CharSequence est l'abstraction, et la Chaîne est la mise en œuvre.
Par ailleurs, "[] " désigne un tableau d'objets. Donc, String[]
est un tableau de chaînes de caractères. Et la Chaîne elle-même est un tableau de caractères.
CharSequence
représente une interface à une séquence de caractères, avec des opérations communes à toutes les classes de la mettre en œuvre. Toutefois, en particulier, CharSequence
ne fournit aucune garantie quant à savoir si la séquence est mutable ou pas. Donc, vous pouvez avoir un immuable la mise en œuvre de la classe, comme String
ou mutables, comme StringBuilder
et StringBuffer
.
En outre, CharSequence
ne permet pas d'affiner l'objectif général implémentations de l' equals()
ou hashCode()
méthodes, alors il n'ya aucune garantie que les objets de classes différentes de la mise en œuvre de CharSequence
permettra de comparer à l'égalité, même si le sous-jacent de la séquence qu'ils détiennent est le même. Donc, étant donné:
String seq1 = "hello";
StringBuilder seq2 = new StringBuilder("hello");
StringBuffer seq3 = new StringBuffer("hello");
les comparaisons entre ces trois à l'aide d' .equals()
rendement false
sur la version 1.6 de Java, mais je ne trouve pas toutes les garanties que cela ne changera pas dans l'avenir (même si c'est probablement assez improbable).
Et CharSequence[]
et String[]
sont simplement des tableaux de leurs types respectifs.
EDIT: La conséquence pratique de ce qui est à comparer CharSequence
s pour l'égalité, vous devez utiliser leur toString()
méthode et de comparer la résultante String
s, puisque c'est la garantie de revenir true
si le sous-jacent séquences sont les mêmes.
Un CharSequence est une interface. String est une séquence de caractères immuable et implémente l'interface CharSequence. CharSequence [] et String [] ne sont respectivement que des tableaux de CharSequence et String.
Cela signifie que partout où vous voyez CharSequence, vous pouvez passer un objet String.
CharSequence représente un ensemble ordonné de caractères et définit des méthodes pour examiner ce jeu de caractères. C'est ineterface, et une implémentation de cette interface est la classe String .
Veuillez vous reporter à la documentation de l'API Java pour plus d'informations. En outre, ce tutoriel peut vous aider: http://download.oracle.com/javase/tutorial/