Циклы по символам
Обрабатывайте каждый символ в строке
«Циклы по символам» — бесплатный урок Java Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 4 уроков всего.
Строки состоят из символов
String — это последовательность символов. Каждый символ находится в позиции, называемой индексом, начиная с 0.
В строке "Java" индекс 0 содержит 'J', индекс 1 — 'a' и так далее. Цикл позволяет последовательно посетить каждый символ.
String word = "Java";
// indexes: 0=J 1=a 2=v 3=acharAt получает один символ
Метод charAt(index) возвращает символ в заданной позиции строки String.
Индексы находятся в диапазоне от 0 до length() - 1. Запрос индекса за пределами этого диапазона вызывает ошибку.
public class Main {
public static void main(String[] args) {
String word = "Java";
System.out.println(word.charAt(0));
System.out.println(word.charAt(3));
}
}Какова длина строки
Метод length() возвращает количество символов в строке String.
Для "Java" он возвращает 4. Поскольку индексы начинаются с 0, последний допустимый индекс всегда равен length() - 1.
public class Main {
public static void main(String[] args) {
String word = "Hello";
System.out.println(word.length());
}
}Цикл с индексом
Классический цикл for перебирает индексы от 0 до length() - 1, каждый раз вызывая charAt.
Так Вы получаете и позицию, и символ, что полезно, когда индекс имеет значение.
public class Main {
public static void main(String[] args) {
String word = "Java";
for (int i = 0; i < word.length(); i++) {
System.out.println(word.charAt(i));
}
}
}Расширенный цикл for
Если индекс Вам не нужен, преобразуйте строку String в массив символов с помощью toCharArray() и используйте цикл по элементам.
Такой код легко читается: для каждого символа c в слове выполните нужное действие.
public class Main {
public static void main(String[] args) {
String word = "Java";
for (char c : word.toCharArray()) {
System.out.println(c);
}
}
}Вывод в одну строку
Используйте System.out.print вместо println, чтобы символы оставались в одной строке.
Это удобно при восстановлении или преобразовании текста посимвольно.
public class Main {
public static void main(String[] args) {
String word = "Java";
for (char c : word.toCharArray()) {
System.out.print(c);
}
System.out.println();
}
}Преобразование каждого символа
Внутри цикла можно изменить каждый символ перед его использованием. Здесь по мере обработки мы переводим каждую букву в верхний регистр.
Мы создаём новую строку, потому что исходную строку нельзя изменить: строки неизменяемы.
public class Main {
public static void main(String[] args) {
String word = "java";
String result = "";
for (char c : word.toCharArray()) {
result += Character.toUpperCase(c);
}
System.out.println(result);
}
}Цикл в обратном направлении
Чтобы развернуть строку, перебирайте индексы от последнего до 0, используя charAt.
Установите для i значение length() - 1 и уменьшайте его, пока оно не достигнет 0.
public class Main {
public static void main(String[] args) {
String word = "Java";
for (int i = word.length() - 1; i >= 0; i--) {
System.out.print(word.charAt(i));
}
System.out.println();
}
}Следите за границами
Всегда выполняйте цикл, пока i < word.length(), и никогда не используйте i <= word.length().
Выход за конец строки вызывает charAt с недопустимым индексом и приводит к исключению StringIndexOutOfBoundsException.
String word = "Hi";
// valid indexes: 0 and 1 only
// charAt(2) would crashПоиск символа
Чтобы найти нужный символ, перебирайте символы и сравнивайте каждый с помощью ==. Здесь мы выводим индекс первого 'a'.
Как только найдём его, досрочно остановим цикл с помощью break.
public class Main {
public static void main(String[] args) {
String word = "Java";
for (int i = 0; i < word.length(); i++) {
if (word.charAt(i) == 'a') {
System.out.println("Found at " + i);
break;
}
}
}
}Чтение строки
Перебор символов лежит в основе задач поиска, замены и проверки.
Если Вам нужно внимательно изучить текст, стандартный инструмент — пройти циклом по каждому символу.
for (char c : "ab".toCharArray()) {
System.out.println(c);
}Быстрая проверка
Проверьте своё понимание перебора символов.
Итоги
Используйте charAt(i) в цикле с индексом или toCharArray() в цикле по элементам, чтобы посетить каждый символ.
Выполняйте цикл, пока i < length(), чтобы не выйти за границы, и создавайте новые строки, поскольку строки неизменяемы. Этот шаблон лежит в основе поиска и преобразования текста.
Часто задаваемые вопросы
Урок «Циклы по символам» бесплатный?
Да — полный текст урока «Циклы по символам» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 4 уроков всего.
Чему я научусь в уроке «Циклы по символам»?
Обрабатывайте каждый символ в строке Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Java Academy?
Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Циклы по символам»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Java Academy?
Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Примитивный тип char
- Вспомогательные методы для символов
- Циклы по символам
- Подсчёт и фильтрация символов