¿Cuál es la diferencia entre CharSequence[]
y String[]
?¿Cuál es la diferencia entre CharSequence [] y un String []?
Respuesta
Una CharSequence es una interfaz. String es una secuencia inmutable de caracteres e implementa la interfaz CharSequence. CharSequence [] y String [] son solo arreglos de CharSequence y String respectivamente.
Esto significa que donde quiera que vea CharSequence, puede pasar un objeto String.
String implementa la interfaz CharSequence. CharSequence es implementado por String, pero también por CharBuffer, Segment, StringBuffer, StringBuilder.
De modo que una cadena [] y una secuencia de caracteres [] son esencialmente las mismas. Pero CharSequence es la abstracción, y String es la implementación.
Por cierto, '[]' denota una matriz de objetos. Entonces, String[]
es una matriz de cadenas. Y String en sí mismo es una matriz de personajes.
En Java String no es exactamente una matriz de caracteres. Los caracteres se almacenan en una matriz, pero nunca se obtiene acceso para garantizar que la cadena sea inmutable. –
CharSequence representa un conjunto ordenado de caracteres y define los métodos para examinar este juego de caracteres. Es ineterface, y una implementación de esta interfaz es String class.
Consulte la documentación de la API de Java para obtener más información. Además, este tutorial podría ayudarlo: http://download.oracle.com/javase/tutorial/
Un "conjunto ordenado de caracteres" implicaría que el mismo carácter no puede aparecer dos veces. –
Creo que su comentario debe ser sensible a mayúsculas y minúsculas. Él no dijo 'Set', ¿o sí? –
CharSequence
representa una interfaz para una secuencia de caracteres, con operaciones comunes a todas las clases que la implementan. Sin embargo, en particular, CharSequence
no garantiza si la secuencia es mutable o no. Por lo tanto, puede tener una clase de implementación inmutable, como String
o mutables, como StringBuilder
y StringBuffer
.
Además, CharSequence
no refina las implementaciones de propósito general de los métodos equals()
o hashCode()
, por lo que no hay ninguna garantía de que los objetos de diferentes clases que implementan CharSequence
comparará a ser igual, incluso si la secuencia subyacente que sostienen es la misma . Por lo tanto, teniendo en cuenta:
String seq1 = "hello";
StringBuilder seq2 = new StringBuilder("hello");
StringBuffer seq3 = new StringBuffer("hello");
comparaciones entre estos tres utilizando .equals()
retorno false
en Java 1.6, pero no puedo encontrar ninguna garantía de que esto no va a cambiar en el futuro (aunque es probable que sea bastante improbable).
Y CharSequence[]
y String[]
son solo matrices de sus respectivos tipos.
EDITAR: El resultado práctico de esto es comparar CharSequence
s para la igualdad, usted tiene que utilizar su método toString()
y comparar las resultantes String
s, ya que esto está garantizado para volver true
si las secuencias subyacentes son los mismos.
+1 por la buena explicación – confucius
CharSequence es una interfaz. String es una clase que implementa la interfaz CharSequence. Eso significa que un objeto String pasa como un objeto CharSequence. Hay diferentes clases que implementan la interfaz CharSequence. Todos ellos definen los métodos que se correlacionan con las firmas de métodos (¿o métodos abstractos?) que proporciona la interfaz CharSequence.
Aquí está mi diagrama que muestra cómo String
es uno de varios concrete classes que implementan CharSequence
interface.
En particular, StringBuilder
se usa comúnmente como una alternativa más rápida a los objetos de concatenación String
con el operador +
, donde no se necesita la seguridad de la hebra.
Los corchetes significa una matriz. Entonces, String[]
es una matriz de objetos String
, y CharSequence[]
es una matriz de objetos que pueden o no ser objetos String
pero definitivamente son objetos que implementan la interfaz CharSequence
.
Consulte my Answer here y my Answer here para obtener más información.
- 1. ¿Cuál es la diferencia entre Double.parseDouble (String) y Double.valueOf (String)?
- 2. ¿Cuál es la diferencia entre string y StringBuilder?
- 3. Diferencia entre @string y @ + string?
- 4. Diferencia entre String [] a y String ... a
- 5. Cuál es la diferencia entre String (value) vs value.toString()
- 6. ¿Cuál es la diferencia entre llamar Double.valueOf (String s) y new Double (String s)?
- 7. ¿Cuál es la diferencia entre Func <string, string> y delegate?
- 8. ¿Cuál es la diferencia entre std :: string :: c_str y std :: string :: data?
- 9. C#: ¿Cuál es la diferencia entre CompareTo (String) y Equals (String)?
- 10. ¿Cuál es la diferencia entre Double.valueOf (String s) y Double.ParseDouble (String s)?
- 11. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 12. ¿Cuál es la diferencia entre dict() y {}?
- 13. ¿Cuál es la diferencia entre ".equals" y "=="?
- 14. Cuál es la diferencia entre = y: =
- 15. ¿Cuál es la diferencia entre .ToString (+) y ""
- 16. ¿Cuál es la diferencia entre " " y ""?
- 17. ¿cuál es la diferencia entre:.! y: r !?
- 18. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 19. Cuál es la diferencia entre $ (...) y `...`
- 20. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 21. ¿Cuál es la diferencia entre + = y = +?
- 22. Cuál es la diferencia entre $ y jQuery
- 23. ¿Cuál es la diferencia entre {0} y ""?
- 24. ¿Cuál es la diferencia entre un nanokernel y un exokernel?
- 25. ¿Cuál es la diferencia entre un JavaBean y un POJO?
- 26. ¿Cuál es la diferencia entre un ayudante y un parcial?
- 27. ¿Cuál es la diferencia entre un árbol y un directorio?
- 28. ¿Cuál es la diferencia entre un predicado y un funcionador?
- 29. ¿Cuál es la diferencia entre un IORef y un MVar?
- 30. ¿Cuál es la diferencia entre un "nonce" y un "GUID"?
Es posible que desee agregar una etiqueta java. O alguien con suficiente representante puede hacerlo. – codinguser
Consulte _Eficaz Java 2nd Edition, artículo 52: consulte los objetos por sus interfaces_. 'String' es una' clase', 'CharSequence' es una' interface' (esa 'String' y algunas otras implementan). 'CharSequence []' es más flexible. Dicho esto, _Elemento 25: Preferir listas a matrices_. – polygenelubricants
posible duplicado de [CharSequence VS String en Java?] (Http://stackoverflow.com/questions/1049228/charsequence-vs-string-in-java) –