Отличие stringbuilder от string java

Отличие stringbuilder от string java

  • Introduction to Java
  • The complete History of Java Programming Language
  • C++ vs Java vs Python
  • How to Download and Install Java for 64 bit machine?
  • Setting up the environment in Java
  • How to Download and Install Eclipse on Windows?
  • JDK in Java
  • How JVM Works – JVM Architecture?
  • Differences between JDK, JRE and JVM
  • Just In Time Compiler
  • Difference between JIT and JVM in Java
  • Difference between Byte Code and Machine Code
  • How is Java platform independent?
  • Decision Making in Java (if, if-else, switch, break, continue, jump)
  • Java if statement with Examples
  • Java if-else
  • Java if-else-if ladder with Examples
  • Loops in Java
  • For Loop in Java
  • Java while loop with Examples
  • Java do-while loop with Examples
  • For-each loop in Java
  • Continue Statement in Java
  • Break statement in Java
  • Usage of Break keyword in Java
  • return keyword in Java
  • Object Oriented Programming (OOPs) Concept in Java
  • Why Java is not a purely Object-Oriented Language?
  • Classes and Objects in Java
  • Naming Conventions in Java
  • Java Methods
  • Access Modifiers in Java
  • Java Constructors
  • Four Main Object Oriented Programming Concepts of Java
  • Inheritance in Java
  • Abstraction in Java
  • Encapsulation in Java
  • Polymorphism in Java
  • Interfaces in Java
  • ‘this’ reference in Java
Читайте также:  Jquery html весь блок

Источник

Кофе-брейк #227. В чем разница между String и StringBuilder в Java. Зачем нужны итераторы в Java-коде

Java-университет

Кофе-брейк #227. В чем разница между String и StringBuilder в Java. Зачем нужны итераторы в Java-коде - 1

Источник: Medium Это руководство поможет вам углубить понимание классов String и StringBuilder. Вы узнаете об их характеристиках, различиях и вариантах использования на соответствующих примерах кода. Поскольку Java — это широко используемый язык программирования, он предлагает множество способов работы со строками. Среди них для обработки строк чаще всего применяются String и StringBuilder .

Неизменяемые строки

Как известно, в Java строки неизменяемы. Это означает, что после создания объекта String вы не можете изменить его содержимое. Вот простая демонстрация:

 String str = "Hello, "; str += "World!"; System.out.println(str); // Вывод: Hello, World! 

В этом примере может показаться, что мы изменили str , но на самом деле произошло то, что новый объект String был создан с комбинированным содержимым. Исходный строковый объект “Hello, ” все еще существует в памяти, но он потерян для нас, потому на него больше нет ссылки. Все это может привести к неэффективному использованию памяти, особенно при работе с большими объемами строковых данных.

Представляем StringBuilder

Java предлагает решение этой потенциальной неэффективности с помощью класса StringBuilder . В отличие от String , StringBuilder является изменяемым, то есть его содержимое может быть изменено после его создания.

 StringBuilder sb = new StringBuilder("Hello, "); sb.append("World!"); System.out.println(sb.toString()); // Вывод: Hello, World! 

Здесь мы создаем StringBuilder с “Hello,”, а затем добавляем к нему “World!”. Во время этого процесса не создаются новые объекты, что делает StringBuilder более экономичным вариантом при выполнении нескольких обработок строк.

Сравнение String и StringBuilder

  • Производительность : StringBuilder работает быстрее при выполнении нескольких конкатенаций, так как не создает каждый раз новый объект.
  • Безопасность потоков : String является потокобезопасным, потому что он неизменяем. Несколько потоков не могут изменить свое состояние. Тогда как StringBuilder не является потокобезопасным. Поэтому если вам нужно обработать строки в нескольких потоках, то наверное стоит рассмотреть StringBuffer , который является потоко-ориентированным вариантом StringBuilder .
  • Сложность : для простых строковых операций, где производительность не имеет значения, использование String может упростить чтение и понимание кода.
 long startTime = System.currentTimeMillis(); String str = ""; for (int i = 0; i < 10000; i++) < str += i; >long endTime = System.currentTimeMillis(); System.out.println("Time taken by String: " + (endTime - startTime) + "ms"); startTime = System.currentTimeMillis(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < 10000; i++) < sb.append(i); >endTime = System.currentTimeMillis(); System.out.println("Time taken by StringBuilder: " + (endTime - startTime) + "ms"); 

Здесь мы добавляем числа от 0 до 9999 к String и StringBuilder . Время, затрачиваемое StringBuilder , значительно меньше, чем у String .

Заключение

Выбор между String и StringBuilder в Java зависит от ваших конкретных требований. Для простых и мелкомасштабных операций, где требуется безопасность потоков, String будет хорошим выбором. Но если речь идет о крупномасштабных или критичных к производительности операций, включающих многочисленные обработки строк, то StringBuilder , конечно, является лучшим вариантом. Понимание характеристик этих двух классов может значительно повлиять на эффективность ваших Java-приложений. Убедитесь, что вы выбрали тот вариант, который лучше всего соответствует вашим потребностям и потребностям вашей программы.

Зачем нужны итераторы в Java-коде

  • ArrayList
  • LinkedList
  • Vector
  • Stack
  • Queue
  • HashSet
  • TreeSet
  • HashMap
  • TreeMap
  • hasNext() — возвращает true , если текущий элемент имеет следующий элемент, который соответствует текущему элементу, не являющемуся последним элементом коллекции.
  • next() — возвращает следующий элемент в коллекции.
  • remove() — удаляет последний элемент, возвращенный итератором. Он полезен, поскольку может просто удалить элемент без использования разработчиком методов связанной коллекции для удаления элемента. Метод итератора remove() сам вызывает необходимые методы и выполняет работу за вас.
 ArrayList fruits = new ArrayList<>(); fruits.add("Apple"); fruits.add("Banana"); fruits.add("Orange"); Iterator iterator = fruits.iterator(); while (iterator.hasNext())
 ArrayList numbers = new ArrayList<>(); numbers.add(10); numbers.add(20); numbers.add(30); Iterator iterator = numbers.iterator(); while (iterator.hasNext()) < int number = iterator.next(); if (number >20) < iterator.remove(); >> System.out.println(numbers); // Вывод: [10, 20] 

Зачем использовать итераторы в Java-коде?

Существует много преимуществ использования итераторов. Вот лишь некоторые из них, которые я считаю наиболее важными: Простота и удобочитаемость . Итераторы абстрагируются от базовой функциональности при доступе или удалении элемента из коллекции. Если вы работаете с несколькими коллекциями/типами данных, то можете использовать итераторы для создания общих и многократно используемых методов для работы с элементами из разных коллекций. Безопасность . Итераторы создают четкое разделение между процессом итерации и базовой структурой данных, тем самым предотвращая любые случайные модификации, ошибки индексации и другие проблемы, которые могут вызвать неприятные сюрпризы. Настройка . Вы можете создавать настраиваемые итераторы для различных целей, чтобы перемещаться по коллекции определенным образом в соответствии с потребностями вашей программы и избегать дублирования кода. Обратите внимание на “ленивое удаление” (lazy deletion) как простой вариант использования этого аспекта. Обработка исключений . В большинстве случаев итераторы имеют встроенную обработку исключений. Таким образом, если во время обхода возникает ошибка, то итератор выдает исключение, помогая вам более эффективно отлаживать код.

Заключение

Итераторы — это мощные инструменты для написания чистого и многократно используемого кода, предоставляющие стандартизированный способ обхода элементов коллекций без необходимости знать функциональность базовой структуры данных. Используя итераторы в своих программах, разработчики могут создавать более чистый и удобный для сопровождения код.

Источник

Разница между String и StringBuilder в Java

В этом посте будет обсуждаться разница между строкой и StringBuilder (или же StringBuffer ) на Java.

1. Изменчивость

Строка неизменяема в Java, а StringBuilder является изменчивым в Java. Неизменяемый объект — это объект, содержимое которого нельзя изменить после его создания.

Когда мы пытаемся объединить две строки Java, в пуле строк создается новый объект String. Это можно продемонстрировать, сравнив HashCode для объекта String после каждой операции concat.

результат:

2081
64578

Как видно из приведенного выше кода, после конкатенации создается новый хэш-код, доказывающий, что новый объект String создан с обновленными значениями, а старый объект был разыменован.

2. Равенство

Мы можем использовать equals() метод сравнения двух строк в Java, поскольку String класс переопределяет equals() метод Object класс, пока StringBuilder не отменяет equals() метод Object класс и поэтому equals() метод нельзя использовать для сравнения двух StringBuilder объекты.

результат:

true
false

3. Сопоставимые

The String класс реализует Comparable интерфейс, при этом StringBuilder нет. Чтобы проиллюстрировать это, рассмотрим следующий код, который бросает ClassCastException поскольку StringBuilder не предоставляет никакого механизма для сравнения строк.

результат:

java.lang.StringBuilder cannot be cast to java.lang.Comparable

4. Конструктор

Мы можем создать объект String без использования оператора new, что невозможно с StringBuilder .

5. Производительность

StringBuilder является быстрым и потребляет меньше памяти, чем строка, при выполнении конкатенаций. Это связано с тем, что строка неизменяема в Java, а объединение двух строковых объектов предполагает создание нового объекта.

Для иллюстрации рассмотрим следующий код, который регистрирует время, затраченное как строкой, так и StringBuilder объекты на несколько конкатенаций.

Выход (будет варьироваться):

The time taken by string concatenation: 504774386ns
The time taken by StringBuilder concatenation: 1081315ns

6. Длина

Поскольку строка неизменяема, ее длина фиксирована. Но StringBuilder имеет setLength() метод, который может изменить StringBuilder объекта до указанной длины.

Когда использовать строку и StringBuilder ?

Строка может использоваться, когда требуется неизменность или не требуется операция конкатенации. А StringBuilder может использоваться, когда требуется изменяемая строка без снижения производительности, связанного с созданием большого количества строк по пути.

Это все о различиях между String и StringBuilder в Java.

Средний рейтинг 4.81 /5. Подсчет голосов: 80

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Расскажите, как мы можем улучшить этот пост?

Источник

Оцените статью