La mayoría de las respuestas aquí son correctas (es manejado por el compilador, + se convierte en .Append() ...)
Quería agregar que todos deberían echar un vistazo al código fuente de String y anexar en algún momento, es bastante impresionante.
creo que todo se redujo a algo como:
"a"+"b"+"c"
=
new String().append("a").append("b").append("c")
Pero entonces sucede algo de magia. Esto se convierte en:
- Crear una matriz de cadenas de longitud 3
- copia una a la primera posición.
- copia b en la segunda
- copia C en la tercera
Mientras que la mayoría de la gente cree que va a crear "ab", a continuación, tirar a la basura cuando se crea "abc". Realmente entiende que está siendo encadenado y hace algo de manipulación.
También hay un truco en el que si tienes la cadena "abc" y pides una subcadena que resulta ser "bc", PUEDEN compartir exactamente la misma matriz subyacente. Notarás que hay una posición de inicio, posición final y bandera "compartida".
De hecho, si no se comparte, es posible que se extienda la longitud de una cadena y copiar los otros en.
Ahora estoy siendo confuso. Lee el código fuente, es bastante genial.
'StringBuilder' debe ser preferido cuando la sincronización no es una preocupación. – gpampara
@gpampara El compilador sabe usar StringBuilder. StringBuffer se utilizó en versiones anteriores a la introducción de StringBuilder. –