java tutorial - Руководство Java String, StringBuffer и StringBuilder - учебник java - java programming - учиться java - java basics - java for beginners
1- Иерархическое наследование
java - джава - учиться java - учебник java -
Java интерфейс
- примеры java - java-программы
- При работе с текстовым данными, Java предоставляет вам 3 класса String, StringBuffer и StringBuilder. При работе с большими данными вам стоит использовать StringBuffer или StringBuilder чтобы достичь лучшую эффективность. Стандартно эти 3 класса имеют много общего.
- String не изменяется (immutable), это понятие будет детально описано в статье. Он не позволяет иметь подкласс.
- StringBuffer, StringBuilder могут быть изменены (mutable)
- StringBuilder и StringBuffer похожи, лишь отличаются в ситуациях связанные с использованием многопоточности (Multi Thread).
- При обработке тектса со многими потоками(Thread) вам следует использовать StringBuffer, чтобы предотвратить конфликт между потоками.
- При обработке текста с одним потоком стоит использовать StringBuilder.
- Если сравнить скорость обработки, то самый лучший это StringBuilder, затем идет StringBuffer и последний это String.
2- Понятия изменяемые & неизменяемые
- Посмотрим иллюстрированный пример:
- String это неизменяемый класс, String имеет разные свойства (поля), например length,... го эти значения не могут быть изменены.
3- String
- String это очень важный класс в Java, и любой кто начинает с Java использует команду System.out.println() чтобы распечатать String на экран Console. Многие обычно не знают что String является неизменным ( immutable) и финальным (Не позволяет классу наследовать его), все изменения в String создают другой объект String.
3.1- String is a very special class
- В java, String это особенный класс, причиной является то, что он используется постоянно в программе, поэтому он трребует производительность и гибкость. Это причина, почему String имеет свойства объекта и примитивный вид (primitive).
Примитивный вид:
- Вы можете создать string literal (строковый литерал), string literal хранится в стеке (stack), требует пространство хранения, и дешевле при обработке.
- String literal = "Hello World";
- Вы можете использовать оператор + чтобы соединить 2 string, этот оператор уже знаком и используется для данных примитивного вида как int, float, double.
- String literal хранятся в общем пуле (common pool). Так два string literal имеют похожее содержание, используют общее место в памяти в стеке, это помогает сэкономить память.
Свойство объекта:
- Так как String является классом, он может быть создан используя оператор new.
- String object = new String("Hello World");
- Объекты String хранятся в Heap, требует управление сложности и стоимости пространства хранения в памяти. Два объекта String с одинаковым содержанием хранаятся на 2 разных областях в Heap.
- Например:
3.2- String Literal vs. String Object
- Как упомянуто, существует два способа построить строку (String): неявное строительство путем назначения строкового литерала ( String literal) или явно создать объект String через оператор new и составляющие String. Например,
- Мы объясним, исопльзуя иллюстрации ниже:
- Мы объясним, исопльзуя иллюстрации ниже:
- String literal с одинаковым содержанием, они разделят одно место хранения в общем пуле ( common pool). При этом объекты String хранятся в Heap, и не разделяют место хранения включая эти 2 объекта string с одинаковым содержанием.
- equals() vs ==
- Метод equals() используется для сравнения 2-х объектов, с String это означает сравнение содержания 2-х string. Для ссылочных видов (reference), оператор == значит сравнение адреса области хранения объекта. Посмотрим пример:
- На самом деле, вам следует использовать String literal, вместо оператора new. Это ускоряет вашу программу.
3.3- The methods of the String
- Далее идет список методов String.
3.3.1- length()
- Результаты запуска примера:
java - джава - учиться java - учебник java -
Продолжительность демо
- примеры java - java-программы
3.3.2- concat(String)
- Результаты запуска примера:
java - джава - учиться java - учебник java -
связаться демо
- примеры java - java-программы
3.3.3- indexOf(..)
java - джава - учиться java - учебник java -
Java-индекс демо
- примеры java - java-программы
IndexOfDemo.java
- Результаты запуска примера:
3.3.4- substring(..)
java - джава - учиться java - учебник java -
Java of demo индекс
- примеры java - java-программы
SubstringDemo.java
- Результаты запуска примера:
java - джава - учиться java - учебник java -
подстрока демо
- примеры java - java-программы
3.3.5- replace
- Some methods relating to replace.
ReplaceDemo.java
- Результаты запуска примера:
java - джава - учиться java - учебник java -
заменить демо
- примеры java - java-программы
3.3.6- Другие примеры:
- Результаты запуска примера:
java - джава - учиться java - учебник java -
строка другая демонстрация
- примеры java - java-программы
4- StringBuffer vs StringBuilder
- StringBuilder и StringBuffer очень похожи, отличие в том, что все методы StringBuffer синхронизированы, он подходит, когда вы работаете с многопоточным приложением, несколько потоков могут одновременно иметь доступ в объект StringBuffer. В это време, StringBuilder имеет похожие методы но не синхронизированы, но его производительность выше. Вам следует использовать StringBuilder в однопоточном приложении, или использовать как локальную переменную в методе.