Автор оригинала: Pankaj Kumar.
Строка Java является одним из наиболее широко используемых классов. Класс Java String определен в java.lang
пакете.
Строка Java
- По сути, строка-это последовательность символов, но это не примитивный тип.
- Когда мы создаем строку в java, она фактически создает объект типа String.
- Строка является неизменяемым объектом, что означает, что она не может быть изменена после ее создания.
- Строка-единственный класс, в котором перегрузка операторов поддерживается в java. Мы можем объединить две строки с помощью оператора+. Например
"a"+"b"="ab"
. - Java предоставляет два полезных класса для работы со строками – StringBuffer и StringBuilder .
Давайте продолжим и узнаем больше о классе Java String.
Различные способы создания строки
Существует множество способов создания строкового объекта в java, некоторые из популярных приведены ниже.
Использование строкового литерала
Это самый распространенный способ создания сильных. В этом случае строковый литерал заключен в двойные кавычки.
Использование нового ключевого слова
Мы можем создать строковый объект с помощью нового оператора, как и любой обычный класс java. В классе String доступно несколько конструкторов для получения строки из массива символов, массива байтов, буфера строк и StringBuilder.
Сравнение строк Java
Класс String предоставляет equals()
и equalsIgnoreCase()
методы для сравнения двух строк. Эти методы сравнивают значение строки, чтобы проверить, равны ли две строки или нет. Он возвращает true
, если две строки равны, и false
, если нет.
package com.journaldev.string.examples; /** * Java String Example * * @author pankaj * */ public class StringEqualExample { public static void main(String[] args) { //creating two string object String s1 = "abc"; String s2 = "abc"; String s3 = "def"; String s4 = "ABC"; System.out.println(s1.equals(s2));//true System.out.println(s2.equals(s3));//false System.out.println(s1.equals(s4));//false; System.out.println(s1.equalsIgnoreCase(s4));//true } }
Результатом вышеуказанной программы является:
true false false true
Класс String реализует Сопоставимый интерфейс, который предоставляет compareTo()
и compareToIgnoreCase()
методы и сравнивает две строки лексикографически.
Обе строки преобразуются в значение Юникода для сравнения и возвращают целое значение, которое может быть больше, меньше или равно нулю. Если строки равны, то он возвращает ноль, либо он возвращает либо больше, либо меньше нуля.
package com.journaldev.examples; /** * Java String compareTo Example * * @author pankaj * */ public class StringCompareToExample { public static void main(String[] args) { String a1 = "abc"; String a2 = "abc"; String a3 = "def"; String a4 = "ABC"; System.out.println(a1.compareTo(a2));//0 System.out.println(a2.compareTo(a3));//less than 0 System.out.println(a1.compareTo(a4));//greater than 0 System.out.println(a1.compareToIgnoreCase(a4));//0 } }
Результатом вышеуказанной программы является:
0 -3 32 0
Пожалуйста, прочитайте это более подробно в примере сравнения строк .
Строковые методы Java
Давайте рассмотрим некоторые из популярных методов класса String на примере программы.
раскол()
Метод Java String split() используется для разделения строки с использованием заданного выражения. Существует два варианта метода split ().
split(регулярное выражение строки)
: Этот метод разбивает строку с использованием заданного выражения регулярного выражения и возвращает массив строк.split(регулярное выражение строки, ограничение int)
: Этот метод разбивает строку с использованием заданного выражения регулярного выражения и возвращает массив строк, но элемент массива ограничен указанным пределом. Если указанное ограничение равно 2, то метод возвращает массив размером 2.
Результатом вышеуказанной программы является:
содержит(последовательность символов)
Java String содержит() методы проверяет, содержит ли строка указанную последовательность символов или нет. Этот метод возвращает значение true, если строка содержит указанную последовательность символов, в противном случае возвращает значение false.
Результатом вышеуказанной программы является:
длина()
Метод Java String length() возвращает длину строки.
заменить()
Метод Java String replace() используется для замены определенной части строки другой строкой. Существует четыре варианта метода replace ().
заменить(char oldChar, char newChar)
: Этот метод заменяет все вхождения oldChar на newChar в строке.заменить(цель последовательности символов, замена последовательности символов)
: Этот метод заменяет все целевые литералы литералами замены в строке.replaceAll(регулярное выражение строки, замена строки)
: Этот метод заменяет все совпадения подстроки с указанным регулярным выражением указанной заменой в строке.replaceFirst(регулярное выражение строки, замена строки)
: Этот метод заменяет первое вхождение подстроки, совпадающей с указанным регулярным выражением, указанной заменой в строке.
Результатом приведенной выше программы является:
формат()
Для форматирования строки используется метод Java String format (). Существует два варианта метода java String format ().
формат(языковой стандарт l, формат строки, объект... аргументы)
: Этот метод форматирует строку, используя указанный языковой стандарт, формат строки и аргументы.формат(формат строки, объект... аргументы)
: Этот метод форматирует строку, используя указанный формат строки и аргументы.
Результатом вышеуказанной программы является:
подстрока()
Этот метод возвращает часть строки на основе заданных индексов.
Объединение Строк
Объединение строк-это очень простая операция в java. Строка может быть объединена с помощью оператора “+” или с помощью метода concat ()
.
package com.journaldev.examples; /** * Java String concatenation * * @author pankaj * */ public class StringConcatExample { public static void main(String[] args) { String s1 = "Hello"; String s2 = "World"; String s3 = s1 + s2; //using + operator System.out.println("Using + operator: "); System.out.println(s3); //using concat method System.out.println("Using concat method: "); System.out.println(s1.concat(s2)); } }
Результатом вышеуказанной программы является:
Using + operator: HelloWorld Using concat method: HelloWorld
Проверьте этот пост для получения дополнительной информации о конкатенации строк в Java .
Пул строк Java
Управление памятью является наиболее важным аспектом любого языка программирования. Управление памятью в случае строки в Java немного отличается от любого другого класса. Чтобы сделать Java более эффективной памятью, JVM ввела специальную область памяти для строки, называемую пулом строковых констант.
Когда мы создаем строковый литерал, он проверяет, существует ли уже идентичная строка в пуле строк или нет. Если он есть, то он вернет ссылку на существующую строку пула строк.
Давайте взглянем на приведенный ниже пример программы.
package com.journaldev.examples; /** * Java String Pool Example * */ public class StringPoolExample { public static void main(String[] args) { String a = "abc"; String b = "abc"; String c = "def"; //same reference if (a==b) { System.out.println("Both string refer to the same object"); } //different reference if (a==c) { System.out.println("Both strings refer to the same object"); }else { System.out.println("Both strings refer to the different object"); } } }
Результатом приведенной выше программы является:
Both string refer to the same object Both strings refer to the different object
Проверьте этот пост, чтобы узнать больше о пуле строк Java .
Метод String intern()
Когда мы создаем строку с использованием строкового литерала, она будет создана в пуле строк, но что, если мы создадим строку с использованием нового ключевого слова с тем же значением, которое существует в пуле строк? Можем ли мы переместить строку из памяти кучи в пул строк?
Для этого используется метод intern (), который возвращает каноническое представление строкового объекта. Когда мы вызываем метод intern() для объекта string, созданного с использованием ключевого слова new, он проверяет, есть ли уже строка с тем же значением в пуле?
Если да, то он возвращает ссылку на этот строковый объект из пула. Если нет, то он создает новую строку с тем же содержимым в пуле и возвращает ссылку.
package com.journaldev.examples; /** * Java String intern * * @author pankaj * */ public class StringInternExample { public static void main(String[] args) { String s1 = "pankaj"; String s2 = "pankaj"; String s3 = new String("pankaj"); System.out.println(s1==s2);//true System.out.println(s2==s3);//false String s4 = s3.intern(); System.out.println(s1==s4);//true } }
Проверьте этот пост, чтобы узнать больше о методе стажера Java String.
Преимущества неизменяемости строк
Некоторые из преимуществ того, что строка является неизменяемым классом, заключаются в следующем:
- Пул строковых констант, следовательно, экономит память.
- Безопасность, как она есть, изменить невозможно.
- Потокобезопасный
- Безопасность загрузки класса
Проверьте этот пост, чтобы узнать больше о преимуществах неизменяемости строк .
Соединение строк Java 8()
В классе String в Java 8 добавлен новый статический метод join (). Этот метод возвращает новую строку, состоящую из копий элементов последовательности символов, соединенных вместе с копией указанного разделителя. Давайте рассмотрим пример, чтобы легко понять это.
Listwords = Arrays.asList(new String[]{"Hello", "World", "2019"}); String msg = String.join(" ", words); System.out.println(msg);
Вывод: Привет, Мир 2019
Строковые методы Java 9
В выпуске Java 9 в класс String добавлены два метода. Это – кодовые точки() и символы(). Оба этих метода возвращают объект IntStream, над которым мы можем выполнять некоторые операции.
Давайте быстро рассмотрим эти методы.
String s = "abc"; s.codePoints().forEach(x -> System.out.println(x)); s.chars().forEach(x -> System.out.println(x));
Выход:
97 98 99 97 98 99
Новые методы класса строк Java 11
В выпуске Java 11 в класс String добавлено много новых методов.
- isBlank() – возвращает значение true, если строка пуста или содержит только кодовые точки с пробелами, в противном случае значение false.
- lines() – возвращает поток строк, извлеченных из этой строки, разделенных терминаторами строк.
- strip(), stripLeading(), stripTrailing() – для удаления начальных и конечных пробелов из строки.
- repeat() – возвращает строку, значением которой является объединение этой строки, повторенное заданное количество раз.
Давайте рассмотрим пример программы для этих методов.
package com.journaldev.strings; import java.util.List; import java.util.stream.Collectors; /** * JDK 11 New Functions in String class * * @author pankaj * */ public class JDK11StringFunctions { public static void main(String[] args) { // isBlank() String s = "abc"; System.out.println(s.isBlank()); s = ""; System.out.println(s.isBlank()); // lines() String s1 = "Hi\nHello\rHowdy"; System.out.println(s1); List lines = s1.lines().collect(Collectors.toList()); System.out.println(lines); // strip(), stripLeading(), stripTrailing() String s2 = " Java, \tPython\t "; System.out.println("#" + s2 + "#"); System.out.println("#" + s2.strip() + "#"); System.out.println("#" + s2.stripLeading() + "#"); System.out.println("#" + s2.stripTrailing() + "#"); // repeat() String s3 = "Hello\n"; System.out.println(s3.repeat(3)); s3 = "Co"; System.out.println(s3.repeat(2)); } }
Выход:
false true Hi Hello Howdy [Hi, Hello, Howdy] # Java, Python # #Java, Python# #Java, Python # # Java, Python# Hello Hello Hello CoCo
Это все о классе Java String, это примеры методов и манипуляций со строками.
Ссылка: API Doc