Рубрики

Строковый литерал против строкового объекта в Java

Сравните производительность инициализации строки для объекта String Literal и String.
Строковый литерал

String str = “GeeksForGeeks”;

Это строковый литерал. Когда вы объявляете строку таким образом, вы фактически вызываете метод intern () для String. Этот метод ссылается на внутренний пул строковых объектов. Если уже существует строковое значение «GeeksForGeeks», то str будет ссылаться на эту строку, и новый объект String не будет создан. Пожалуйста, обратитесь к Инициализировать и Сравнить строки в Java для деталей.

String Object

String str = new String(“GeeksForGeeks”);

Это строковый объект. В этом методе JVM вынужден создавать новую ссылку на строку, даже если GeeksForGeeks находится в пуле ссылок.

Поэтому, если мы сравним производительность строкового литерала и строкового объекта, строковый объект всегда будет выполняться быстрее, чем строковый литерал, потому что он будет создавать новую строку каждый раз, когда выполняется.
Примечание. Время выполнения зависит от компилятора.

Ниже приводится программа Java для сравнения их производительности.

// Java-программа для сравнения производительности
// строкового литерала и строкового объекта

  

class ComparePerformance {

  

    public static void main(String args[])

    {    

        // Время инициализации для String

        // Буквально

        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);

  

        // Время инициализации для String

        // объект

        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);

    }

}

Выход:

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

Рекомендуемые посты:

Строковый литерал против строкового объекта в Java

0.00 (0%) 0 votes