Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

CompileTime Vs RunTime Resolution of Strings

  • Last Updated : 17 Sep, 2019

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.

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

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.




My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!