Dos preguntas.Coste de búsqueda de la cadena de prácticas y declaración de cadenas literales
Cuando declaramos cadenas literales, buscamos si hay la misma cadena en el grupo de cadenas de heap. ¿Es esto también una pasantía (pasante de método de la clase
String
)?En mi pensamiento, cada declaración de cadena literal necesita una búsqueda binaria o algo por lo que cuesta al menos log (n) cuando n es el número de cadenas existentes en la piscina. Y si hay muchas cadenas en el conjunto, puede ser de alto costo. (¿tal vez la compensación de los costos de búsqueda y la memoria?) Desde este punto de vista, podría ser peligroso declarar cadenas literales mant. Cuán significativo es este costo de búsqueda y por qué java está diseñado de esta manera (grupo de búsqueda cuando se declaran cadenas literales).
A continuación se detalla lo que he mencionado.
Los JavaDoc for the java.lang.String
class estados:
Strings son constantes; sus valores no se pueden cambiar después de que se crean. Los búferes de cadena admiten cadenas mutables. Debido a que los objetos String son inmutables, se pueden compartir.
http://www.janeg.ca/scjp/lang/strLiteral.html comentarios:
En otras palabras, debido a que el compilador sabe las cadenas de valor original no se puede cambiar una vez que se ha creado se puede utilizar de forma segura los datos existentes y evitar llenar la memoria con duplicados.
Modifiqué su referencia al "JSK 1.3" al JavaDoc oficial. –
@joachim Sauer Gracias, pero la última frase es de (http://www.janeg.ca/scjp/lang/strLiteral.html) que eliminaste. ¿Podrías reflejar eso? O lo haré. – RENO
Lo eliminé porque el JavaDoc I vinculado anteriormente es el autor, fuente original de la cita y esa página es de calidad cuestionable (no existe el "JSK 1.3" y en realidad no enlaza con ninguna de sus fuentes) . –