CompileTime Vs RunTime Resolution of Strings
Compile-Time Resolution of Strings:
When Strings are created with the help of String literals and ‘+’ operator, they get concatenated at compile time. This is referred to as Compile-Time Resolution of Strings. Compiler eliminates the concatenation operator and optimizes the string.
Example:
Consider the below code:
String str = "Beginner " + "for" + "Beginner" ; |
The above code gets optimized at by the Compiler through Compile-Time Resolution of Strings as:
String str = "w3wiki" ; |
RunTime Resolution of Strings:
When Strings are created with the help of String literals along with variables and ‘+’ operator, they get concatenated at runtime only, as the value of the variables cannot be predicted beforehand. This is referred to as the RunTime Resolution of Strings.
Example:
Consider the below code:
String str = "Beginner " + var + "Beginner" ; |
The above code cannot be optimized at by the Compiler at Compile-Time as the value of variable ‘var’ is unknown. Hence RunTime Resolution of Strings occurs here.
Different scenarios and identifying the type of resolution:
- Suppose the String is defined using a StringBuffer:
String str = (
new
StringBuffer())
.append(
"Beginner"
)
.append(
"for"
)
.append(
"Beginner"
)
.toString();
Type of String Resolution: Run-Time Resolution of String
Here the compiler cannot resolve at compile time because object creation is a runtime activity. Hence the above string will be resolved at run-time.
- Suppose the String is defined using a StringBuffer:
String str =
"Beginner"
+
" "
+
"for"
+
" "
+
"Beginner"
;
Type of String Resolution: Compile-Time Resolution of String
Here the compiler can resolve at compile time because given Strings are String Literals. Hence the above string will be resolved at compile-time.
- Suppose the String is defined in a return statement:
public
static
String func(String var)
{
return
"Beginner"
+ var +
"Beginner"
;
}
Type of String Resolution: Run-Time Resolution of String
Here the compiler cannot resolve at compile time because the value of the variable ‘var’ is a runtime activity. Hence the above string will be resolved at run-time.
Contact Us