- Класс String в Java
- Работа с Java String
- Создание строк
- Сложение строк
- Сравнение строк
- Перевод объекта/примитива в строку
- Перевод строки в число
- Перевод коллекции строк к строковому представлению
- Разбиение строки на массив строк
- Определение позиции элемента в строке
- Извлечение подстроки из строки
- Перевод строки в верхний/нижний регистр:
- Дополнительные источники
Класс String в Java
Класс String в Java предназначен для работы со строками в Java. Все строковые литералы, определенные в Java программе (например, «abc») — это экземпляры класса String. Давай посмотрим на его ключевые характеристики:
- Класс реализует интерфейсы Serializable и CharSequence . Поскольку он входит в пакет java.lang , его не нужно импортировать.
- Класс String в Java — это final класс, который не может иметь потомков.
- Класс String — immutable класс, то есть его объекты не могут быть изменены после создания. Любые операции над объектом String, результатом которых должен быть объект класса String, приведут к созданию нового объекта.
- Благодаря своей неизменности, объекты класса String являются потокобезопасными и могут быть использованы в многопоточной среде.
- Каждый объект в Java может быть преобразован в строку через метод toString , унаследованный всеми Java-классами от класса Object .
Работа с Java String
Это один из самых часто используемых классов в Java. В нем есть методы для анализа определенных символов строки, для сравнения и поиска строк, извлечения подстрок, создания копии строки с переводом всех символов в нижний и верхний регистр и прочие. Список всех методов класса String можно изучить в официальной документации. Также в Java реализован несложный механизм конкатенации (соединения строк), преобразования примитивов в строку и наоборот. Давай рассмотрим некоторые примеры работы с классом String в Java.
Создание строк
- создать объект, содержащий пустую строку
- создать копию строковой переменной
- создать строку на основе массива символов
- создать строку на основе массива байтов (с учетом кодировок)
- и т.д.
Сложение строк
Сложить две строки в Java довольно просто, воспользовавшись оператором + . Java позволяет складывать друг с другом и переменные, и строковые литералы:
public static void main(String[] args)
Складывая объекты класса String с объектами других классов, мы приводим последние к строковому виду. Преобразование объектов других классов к строковому представлению выполняется через неявный вызов метода toString у объекта. Продемонстрируем это на следующем примере:
public class StringExamples < public static void main(String[] args) < Human max = new Human("Макс"); String out = "Java объект: " + max; System.out.println(out); // Вывод: Java объект: Человек с именем Макс >static class Human < private String name; public Human(String name) < this.name = name; >@Override public String toString() < return "Человек с именем " + name; >> >
Сравнение строк
public static void main(String[] args) < String x = "Test String"; System.out.println("Test String".equals(x)); // true >
public static void main(String[] args) < String x = "Test String"; System.out.println("test string".equalsIgnoreCase(x)); // true >
Перевод объекта/примитива в строку
Для перевода экземпляра любого Java-класса или любого примитивного типа данных к строковому представлению, можно использовать метод String.valueOf() :
public class StringExamples < public static void main(String[] args) < String a = String.valueOf(1); String b = String.valueOf(12.0D); String c = String.valueOf(123.4F); String d = String.valueOf(123456L); String s = String.valueOf(true); String human = String.valueOf(new Human("Alex")); System.out.println(a); System.out.println(b); System.out.println(c); System.out.println(d); System.out.println(s); System.out.println(human); /* Вывод: 1 12.0 123.4 123456 true Человек с именем Alex */ >static class Human < private String name; public Human(String name) < this.name = name; >@Override public String toString() < return "Человек с именем " + name; >> >
Перевод строки в число
Часто бывает нужно перевести строку в число. У классов оберток примитивных типов есть методы, которые служат как раз для этой цели. Все эти методы начинаются со слова parse. Рассмотрим ниже перевод строки в целочисленное ( Integer ) и дробное ( Double ) числа:
public static void main(String[] args) < Integer i = Integer.parseInt("12"); Double d = Double.parseDouble("12.65D"); System.out.println(i); // 12 System.out.println(d); // 12.65 >
Перевод коллекции строк к строковому представлению
- join(CharSequence delimiter, CharSequence. elements)
- join(CharSequence delimiter, Iterable elements)
public static void main(String[] args) < Listpeople = Arrays.asList( "Philip J. Fry", "Turanga Leela", "Bender Bending Rodriguez", "Hubert Farnsworth", "Hermes Conrad", "John D. Zoidberg", "Amy Wong" ); String peopleString = String.join("; ", people); System.out.println(peopleString); /* Вывод: Philip J. Fry; Turanga Leela; Bender Bending Rodriguez; Hubert Farnsworth; Hermes Conrad; John D. Zoidberg; Amy Wong */ >
Разбиение строки на массив строк
Эту операцию выполняет метод split(String regex) В качестве разделителя выступает строковое регулярное выражение regex . В примере ниже произведем операцию, обратную той, что мы выполняли в предыдущем примере:
public static void main(String[] args) < String people = "Philip J. Fry; Turanga Leela; Bender Bending Rodriguez; Hubert Farnsworth; Hermes Conrad; John D. Zoidberg; Amy Wong"; String[] peopleArray = people.split("; "); for (String human : peopleArray) < System.out.println(human); >/* Вывод: Philip J. Fry Turanga Leela Bender Bending Rodriguez Hubert Farnsworth Hermes Conrad John D. Zoidberg Amy Wong */ >
Определение позиции элемента в строке
- indexOf(int ch)
- indexOf(int ch, int fromIndex)
- indexOf(String str)
- indexOf(String str, int fromIndex)
- lastIndexOf(int ch)
- lastIndexOf(int ch, int fromIndex)
- lastIndexOf(String str)
- lastIndexOf(String str, int fromIndex)
- ch — искомый символ ( char )
- str — искомая строка
- fromIndex — позиция с которой нужно искать элемент
- методы indexOf — возвращают позицию первого найденного элемента
- методы lastIndexOf — возвращают позицию последнего найденного элемента
public static void main(String[] args) < String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; System.out.println(alphabet.indexOf('A')); // 0 System.out.println(alphabet.indexOf('K')); // 10 System.out.println(alphabet.indexOf('Z')); // 25 System.out.println(alphabet.indexOf('Я')); // -1 >
Извлечение подстроки из строки
public static void main(String[] args) < String filePath = "D:\\Movies\\Futurama.mp4"; int lastFileSeparatorIndex = filePath.lastIndexOf('\\'); String fileName = filePath.substring(lastFileSeparatorIndex + 1); System.out.println(fileName); //9 >
Перевод строки в верхний/нижний регистр:
public static void main(String[] args) < String fry = "Philip J. Fry"; String lowerCaseFry = fry.toLowerCase(); String upperCaseFry = fry.toUpperCase(); System.out.println(lowerCaseFry); // philip j. fry System.out.println(upperCaseFry); // PHILIP J. FRY >
- Знакомство со String приводится на 1-ом уровне, 4-ой лекции квеста Java Syntax
- Внутреннее устройство String, метод substring изучаются на 2-ом уровне, 3-ей лекции квеста Java Multithreading
- Поиск, получение, удаление подстроки в String изучаются на 2-ом уровне, 4-ой лекции квеста Java Multithreading
- Метод String.format рассматривается на 2-ом уровне, 6-ой лекции квеста Java Multithreading
Дополнительные источники
- Строки в Java — статья раскрывает некоторые основы по работе со строками в Java.
- Java String. Вопросы к собеседованию и ответы на них, ч.1 — в данной статье рассматриваются вопросы к собеседованию по теме String , а также даются ответы на вопросы с пояснениями и примерами кода.
- Строки в Java (class java.lang.String) — в данной статье приводится более глубокий разбор класса String, а также рассматриваются тонкости работы с этим классом.