65 votes

Quelle est la différence entre CharSequence [] et une chaîne []?

Quelle est la différence entre CharSequence[] et String[] ?

79voto

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.

32voto

Chinmay Kanchi Points 16353

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 CharSequences pour l'égalité, vous devez utiliser leur toString() méthode et de comparer la résultante Strings, puisque c'est la garantie de revenir true si le sous-jacent séquences sont les mêmes.

6voto

codinguser Points 3979

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.

0voto

GileB Points 303

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/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X