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:

  1. 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.

  2. 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.

  3. 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