String
Класс java.lang.String представляет собой неизменяемую (immutable) последовательность символов Unicode. Любая строка в коде Java вида "Hello" — это объект класса String.
Строки в Java хранятся в специальной области памяти — пуле строк (String Pool). Это значит, что одинаковые литералы вида "Привет" указывают на один и тот же объект в памяти. Класс находится в пакете java.lang, поэтому его не нужно импортировать.
Главная особенность: после создания строку нельзя изменить. Любой метод вроде replace() или toUpperCase() не меняет исходный объект, а возвращает новый.
Зачем нужен
хранить и обрабатывать текст (имена, сообщения, ввод пользователя);
сравнивать, искать и заменять подстроки;
формировать выводимые сообщения и форматировать данные;
передавать текстовые данные между методами и классами.
Способы создания
String a = "Привет"; // строковый литерал
String b = new String("Привет"); // через конструктор
char[] arr = {'J', 'a', 'v', 'a'};
String c = new String(arr); // из массива char
String d = String.valueOf(42); // из числа -> "42"
Популярные методы
Метод |
Назначение |
|---|---|
|
возвращает количество символов в строке |
|
возвращает символ по индексу |
|
сравнивает содержимое строк (НЕ |
|
сравнивает без учёта регистра |
|
индекс первого вхождения подстроки, или -1 |
|
подстрока с индекса a до b (b не включительно) |
|
перевод регистра |
|
удаление пробелов по краям |
|
замена символов или подстрок |
|
разбиение на массив по разделителю |
|
содержит ли строка подстроку |
|
начинается/заканчивается ли подстрокой |
|
присоединение строки |
Примеры
Пример 1. Длина и обращение к символам
public class Demo1 {
public static void main(String[] args) {
String s = "AlashEd";
System.out.println("Длина: " + s.length());
System.out.println("Первый символ: " + s.charAt(0));
System.out.println("Последний: " + s.charAt(s.length() - 1));
}
}
Вывод:
Длина: 7
Первый символ: A
Последний: d
Пример 2. Сравнение строк
public class Demo2 {
public static void main(String[] args) {
String a = "Java";
String b = "java";
System.out.println(a.equals(b));
System.out.println(a.equalsIgnoreCase(b));
System.out.println(a == b);
}
}
Вывод:
false
true
false
Пример 3. Подстроки и поиск
public class Demo3 {
public static void main(String[] args) {
String s = "Hello, world!";
System.out.println(s.substring(7, 12));
System.out.println(s.indexOf("world"));
System.out.println(s.contains("Hello"));
}
}
Вывод:
world
7
true
Пример 4. Регистр и удаление пробелов
public class Demo4 {
public static void main(String[] args) {
String s = " Arduino ";
System.out.println("[" + s.trim() + "]");
System.out.println(s.trim().toUpperCase());
System.out.println(s.trim().toLowerCase());
}
}
Вывод:
[Arduino]
ARDUINO
arduino
Пример 5. Замена символов
public class Demo5 {
public static void main(String[] args) {
String phone = "+7 (777) 123-45-67";
String digits = phone.replace(" ", "")
.replace("(", "")
.replace(")", "")
.replace("-", "");
System.out.println(digits);
}
}
Вывод:
+77771234567
Пример 6. Разбиение строки
public class Demo6 {
public static void main(String[] args) {
String csv = "яблоко,банан,киви,манго";
String[] parts = csv.split(",");
for (String p : parts) {
System.out.println(p);
}
}
}
Вывод:
яблоко
банан
киви
манго
Пример 7. Конкатенация
public class Demo7 {
public static void main(String[] args) {
String name = "Беку";
int age = 14;
String msg = "Меня зовут " + name + ", мне " + age + " лет.";
System.out.println(msg);
}
}
Вывод:
Меня зовут Беку, мне 14 лет.
Пример 8. Проверка начала и конца
public class Demo8 {
public static void main(String[] args) {
String file = "robot_phobo.ino";
System.out.println(file.startsWith("robot"));
System.out.println(file.endsWith(".ino"));
System.out.println(file.endsWith(".cpp"));
}
}
Вывод:
true
true
false
См. также
Примечание
Лицензия и источники
Техническое описание класса адаптировано из официальной Java API Documentation (https://docs.oracle.com/en/java/javase/), Oracle Free Documentation License. Перевод на русский, примеры и пояснения — © AlashEd Wiki.