Esta es una pregunta que surgió principalmente de pura curiosidad (y que mató un tiempo). Estoy preguntando específicamente sobre Java en aras de la concreción.¿Qué ocurre durante la compilación y el tiempo de ejecución al concatenar una cadena vacía en Java?
¿Qué ocurre, en la memoria, si concatenar una cadena (cualquier cadena) con una cadena vacía, por ejemplo:
String s = "any old string";
s += "";
Yo sé que aun después, el contenido de s seguirán siendo "cualquier cadena de edad" , ya que una cadena ASCII vacía se almacena en la memoria como un nulo ASCII (ya que, al menos en Java, las cadenas siempre terminan en nulo). Pero tengo curiosidad por saber si Java (¿el compilador? ¿La VM?) Realiza la optimización suficiente para saber que s no se modificará, y puede omitir completamente esa instrucción en el bytecode, o si ocurre algo diferente en los tiempos de compilación y ejecución.
+1 - para greatjustice – Alex
fresco . ¡gracias! –
@mmyers: debe señalar que 1) los bytecode emitidos son (en teoría) específicos del compilador de Java, y 2) el compilador JIT podría (en teoría) optimizar aún más. –