Resolución de strings en tiempo de compilación :
Cuando las strings se crean con la ayuda de los literales de string y el operador ‘+’, se concatenan en el momento de la compilación. Esto se conoce como resolución de strings en tiempo de compilación. El compilador elimina el operador de concatenación y optimiza la string.
Ejemplo:
Considere el siguiente código:
String str = "Geeks " + "for" + "Geeks";
El compilador optimiza el código anterior a través de la resolución de strings en tiempo de compilación como:
String str = "GeeksforGeeks";
Resolución de tiempo de ejecución de strings :
Cuando las strings se crean con la ayuda de los literales de string junto con las variables y el operador ‘+’, se concatenan solo en tiempo de ejecución, ya que el valor de las variables no se puede predecir de antemano. Esto se conoce como Resolución de tiempo de ejecución de strings.
Ejemplo:
Considere el siguiente código:
String str = "Geeks " + var + "Geeks";
El compilador no puede optimizar el código anterior en Compile-Time ya que se desconoce el valor de la variable ‘var’. Por lo tanto, RunTime Resolution of Strings ocurre aquí.
Diferentes escenarios e identificando el tipo de resolución:
- Supongamos que la string se define mediante un StringBuffer:
String str = (
new
StringBuffer())
.append(
"Geeks"
)
.append(
"for"
)
.append(
"Geeks"
)
.toString();
Tipo de resolución de string: Resolución de string en tiempo de ejecución
Aquí el compilador no puede resolver en tiempo de compilación porque la creación de objetos es una actividad de tiempo de ejecución. Por lo tanto, la string anterior se resolverá en tiempo de ejecución.
- Supongamos que la string se define mediante un StringBuffer:
String str =
"Geeks"
+
" "
+
"for"
+
" "
+
"Geeks"
;
Tipo de resolución de string: Resolución de string en tiempo de compilación
Aquí el compilador puede resolver en tiempo de compilación porque las strings dadas son literales de string. Por lo tanto, la string anterior se resolverá en tiempo de compilación.
- Supongamos que la string se define en una declaración de devolución:
public
static
String func(String var)
{
return
"Geeks"
+ var +
"Geeks"
;
}
Tipo de resolución de string: Resolución de string en tiempo de ejecución
Aquí el compilador no puede resolver en tiempo de compilación porque el valor de la variable ‘var’ es una actividad de tiempo de ejecución. Por lo tanto, la string anterior se resolverá en tiempo de ejecución.