Open In App

CompileTime Vs RunTime Resolution of Strings

Improve
Improve
Like Article
Like
Save
Share
Report

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 = "Geeks "
             + "for"
             + "Geeks";


The above code gets optimized at by the Compiler through Compile-Time Resolution of Strings as:




String str = "GeeksforGeeks";


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 = "Geeks " + var + "Geeks";


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("Geeks")
                     .append("for")
                     .append("Geeks")
                     .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 = "Geeks"
                 + " "
                 + "for"
                 + " "
                 + "Geeks";

    
    

    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 "Geeks" + var + "Geeks";
    }

    
    

    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.



Last Updated : 17 Sep, 2019
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads