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:

filter_none

edit
close

play_arrow

link
brightness_4
code

String str = "Geeks "
             + "for"
             + "Geeks";

chevron_right


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

filter_none

edit
close

play_arrow

link
brightness_4
code

String str = "GeeksforGeeks";

chevron_right


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:

filter_none

edit
close

play_arrow

link
brightness_4
code

String str = "Geeks " + var + "Geeks";

chevron_right


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:
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    String str = (new StringBuffer())
                     .append("Geeks")
                     .append("for")
                     .append("Geeks")
                     .toString();

    chevron_right

    
    

    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:
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    String str = "Geeks"
                 + " "
                 + "for"
                 + " "
                 + "Geeks";

    chevron_right

    
    

    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:
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    public static String func(String var)
    {
        return "Geeks" + var + "Geeks";
    }

    chevron_right

    
    

    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

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.