Класс String в Java

Строки широко используются в программировании на Java. В Java строки являются объектами. Java предоставляет класс String для создания строк и работы с ними.


Создание строк

Простейший способ создания строки выглядит так:

String str = "Example";

Когда в коде встречается строковая константа, её значение здесь — "Example", компилятор использует это значение для создания объекта String.

Как и другие объекты, вы можете использовать ключевое слово и методы-конструкторы для создания объектов String.

Создание строк с помощью конструкторов:

String str2=new String("Example");

Строки, созданные с помощью String, хранятся в общем пуле, а строковые объекты, созданные с помощью new, находятся в куче:

String s1 = "Пример"; //Прямое создание с помощью String String s2 = "Пример"; //Прямое создание с помощью String String s3 = s1; //Та же ссылка String s4 = new String("Example"); //Создание объекта String String s5 = new String("Пример"); //Создание объекта String

Класс String имеет 11 конструкторов. Эти методы предоставляют различные параметры для инициализации строк, например, предоставляя параметр в виде массива символов:

Код файла StringDemo.java:

public class StringDemo{ public static void main(String args[]){ char[] helloArray = { 'r', 'u', 'n', 'o', 'o', 'b'}; String helloString = new String(helloArray); System.out.println( helloString ); } }

Результат компиляции и выполнения вышеприведённого примера следующий:

example

Примечание:Класс String является неизменяемым, поэтому после создания объекта String его значение нельзя изменить (подробности см. в анализе в разделе примечаний).

Если вам нужно внести много изменений в строку, следует использовать классыStringBuffer & StringBuilder。


Длина String

Методы, используемые для получения информации об объекте, называются методами доступа.

Методом доступа класса String является метод length(), который возвращает количество символов, содержащихся в объекте строки.

После выполнения следующего кода переменная len равна 14:

Код файла StringDemo.java:

public class StringDemo { public static void main(String args[]) { String site = "www.example.com"; int len = site.length(); System.out.println( "Пример длины URL:" + len ); } }

Результат компиляции и выполнения вышеприведённого примера следующий:

Example网址长度 : 14

Конкатенация строк

Класс String предоставляет метод для конкатенации двух строк:

string1.concat(string2);

Возвращает новую строку, которая является результатом конкатенации string2 со string1. Вы также можете использовать метод concat() для строковых литералов, например:

"我的名字是 ".concat("Example");

Чаще всего для конкатенации строк используется оператор '+', например:

"Hello," + " example" + "!"

Результат следующий:

"Hello, example!"

Вот пример:

Код файла StringDemo.java:

public class StringDemo { public static void main(String args[]) { String string1 = "Пример URL:"; System.out.println("1, " + string1 + "www.example.com"); } }

Результат компиляции и выполнения вышеприведённого примера следующий:

1、Example网址:www.example.com

Создание форматированных строк

Мы знаем, что методы printf() и format() можно использовать для форматированного вывода чисел.

Класс String использует статический метод format() для возврата объекта String, а не объекта PrintStream.

Статический метод format() класса String можно использовать для создания переиспользуемых форматированных строк, а не только для однократного вывода на печать.

Как показано ниже:

System.out.printf("Значение переменной типа float равно" + "%f, значение целочисленной переменной равно" + "%d, значение строковой переменной равно" + "равно %s", floatVar, intVar, stringVar);

Вы также можете написать это так

String fs; fs = String.format("Значение переменной с плавающей точкой равно" + "%f, значение целочисленной переменной равно" + "%d, значение строковой переменной равно" + " %s", floatVar, intVar, stringVar);

Методы String

Ниже перечислены методы, поддерживаемые классом String. Для получения более подробной информации см.Java String APIдокументацию:

SN (Серийный номер) Описание метода
1 char charAt(int index)
Возвращает значение char по указанному индексу.
2 int compareTo(Object o)
Сравнивает эту строку с другим объектом.
3 int compareTo(String anotherString)
Сравнивает две строки лексикографически.
4 int compareToIgnoreCase(String str)
Сравнивает две строки лексикографически, игнорируя регистр.
5 String concat(String str)
Присоединяет указанную строку к концу этой строки.
6 boolean contentEquals(StringBuffer sb)
Возвращает true тогда и только тогда, когда эта строка имеет ту же последовательность символов, что и указанный StringBuffer.
7 static String copyValueOf(char[] data)
Возвращает String, представляющую последовательность символов в указанном массиве.
8 static String copyValueOf(char[] data, int offset, int count)
Возвращает String, представляющую последовательность символов в указанном массиве.
9 boolean endsWith(String suffix)
Проверяет, заканчивается ли эта строка указанным суффиксом.
10 boolean equals(Object anObject)
Сравнивает эту строку с указанным объектом.
11 boolean equalsIgnoreCase(String anotherString)
Сравнивает этот String с другим String, игнорируя регистр.
12 byte[] getBytes()
Кодирует этот String в последовательность байтов, используя кодировку по умолчанию платформы, и сохраняет результат в новый массив байтов.
13 byte[] getBytes(String charsetName)
Кодирует этот String в последовательность байтов, используя указанную кодировку, и сохраняет результат в новый массив байтов.
14 void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
Копирует символы из этой строки в массив символов назначения.
15 int hashCode()
Возвращает хеш-код этой строки.
16 int indexOf(int ch)
Возвращает индекс первого вхождения указанного символа в этой строке.
17 int indexOf(int ch, int fromIndex)
Возвращает индекс первого вхождения указанного символа в этой строке, начиная поиск с указанного индекса.
18 int indexOf(String str)
Возвращает индекс первого вхождения указанной подстроки в этой строке.
19 int indexOf(String str, int fromIndex)
Возвращает индекс первого вхождения указанной подстроки в этой строке, начиная с указанного индекса.
20 String intern()
Возвращает каноническое представление строкового объекта.
21 int lastIndexOf(int ch)
Возвращает индекс последнего вхождения указанного символа в этой строке.
22 int lastIndexOf(int ch, int fromIndex)
Возвращает индекс последнего вхождения указанного символа в этой строке, выполняя поиск в обратном направлении от указанного индекса.
23 int lastIndexOf(String str)
Возвращает индекс самого правого вхождения указанной подстроки в этой строке.
24 int lastIndexOf(String str, int fromIndex)
Возвращает индекс последнего вхождения указанной подстроки в этой строке, выполняя поиск в обратном направлении от указанного индекса.
25 int length()
Возвращает длину этой строки.
26 boolean matches(String regex)
Сообщает, соответствует ли эта строка заданному регулярному выражению.
27 boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
Проверяет, равны ли две области строки.
28 boolean regionMatches(int toffset, String other, int ooffset, int len)
Проверяет, равны ли две области строки.
29 String replace(char oldChar, char newChar)
Возвращает новую строку, полученную заменой всех вхождений oldChar в этой строке на newChar.
30 String replaceAll(String regex, String replacement)
Заменяет каждую подстроку этой строки, соответствующую заданному регулярному выражению, на заданную замену.
31 String replaceFirst(String regex, String replacement)
Заменяет первую подстроку этой строки, соответствующую заданному регулярному выражению, на заданную замену.
32 String[] split(String regex)
Разделяет эту строку вокруг совпадений с заданным регулярным выражением.
33 String[] split(String regex, int limit)
Разделяет эту строку вокруг совпадений с заданным регулярным выражением.
34 boolean startsWith(String prefix)
Проверяет, начинается ли эта строка с указанного префикса.
35 boolean startsWith(String prefix, int toffset)
Проверяет, начинается ли подстрока этой строки с указанного индекса с заданным префиксом.
36 CharSequence subSequence(int beginIndex, int endIndex)
Возвращает новую последовательность символов, которая является подпоследовательностью данной последовательности.
37 String substring(int beginIndex)
Возвращает новую строку, являющуюся подстрокой этой строки.
38 String substring(int beginIndex, int endIndex)
Возвращает новую строку, являющуюся подстрокой этой строки.
39 char[] toCharArray()
Преобразует эту строку в новый массив символов.
40 String toLowerCase()
Преобразует все символы в этой строке в нижний регистр, используя правила локали по умолчанию.
41 String toLowerCase(Locale locale)
Преобразует все символы в этой строке в нижний регистр, используя правила заданной локали.
42 String toString()
Возвращает сам объект (он уже является строкой!).
43 String toUpperCase()
Преобразует все символы в этой String в верхний регистр, используя правила локали по умолчанию.
44 String toUpperCase(Locale locale)
Преобразует все символы в этой String в верхний регистр, используя правила заданного Locale.
45 String trim()
Возвращает копию строки, игнорируя начальные и конечные пробельные символы.
46 static String valueOf(primitive data type x)
Возвращает строковое представление параметра x заданного типа данных.
47 contains(CharSequence chars)
Определяет, содержит ли она указанную последовательность символов.
48 isEmpty()
Определяет, является ли строка пустой.
Другие расширения