String Literal Vs String Object in Java

Compare string initialization performance for String Literal and String object.
String Literal

String str = “GeeksForGeeks”;

This is string literal. When you declare string like this, you are actually calling intern() method on String. This method references internal pool of string objects. If there already exists a string value “GeeksForGeeks”, then str will reference of that string and no new String object will be created. Please refer Initialize and Compare Strings in Java for details.

String Object

String str = new String(“GeeksForGeeks”);

This is string object. In this method JVM is forced to create a new string reference, even if “GeeksForGeeks” is in the reference pool.

Therefore, if we compare performance of string literal and string object, string object will always take more time to execute than string literal because it will construct a new string every time it is executed.
Note: Execution time is compiler dependent.

Below is the Java program to compare their performances.

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to compare performance 
// of string literal and string object
  
class ComparePerformance {
  
    public static void main(String args[])
    {    
        // Initialization time for String
        // Literal
        long start1 = System.currentTimeMillis();
          
        for (int i = 0; i < 10000; i++)
        {
            String s1 = "GeeksForGeeks";
            String s2 = "Welcome";
        }
          
        long end1 = System.currentTimeMillis();
        long total_time = end1 - start1;
  
        System.out.println("Time taken to execute"
                " string literal = " + total_time);
  
        // Initialization time for String
        // object
        long start2 = System.currentTimeMillis();
          
        for (int i = 0; i < 10000; i++)
        {
            String s3 = new String("GeeksForGeeks");
            String s4 = new String("Welcome");
        }
          
        long end2 = System.currentTimeMillis();
        long total_time1 = end2 - start2;
  
        System.out.println("Time taken to execute"+
                   " string object=" + total_time1);
    }
}

chevron_right


Output:

Time taken to execute string literal = 0
Time taken to execute string object = 2


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 :


1


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