split(".") режет строку не так, как кажется

split() принимает регулярное выражение, а не литеральную строку. Точка в regex означает «любой символ», а не буквальную точку — и это ловит даже опытных разработчиков.

Вопрос проверяет, помните ли вы, что String.split() всегда работает через Pattern.compile() под капотом. Если в разделителе есть спецсимвол regex — точка, плюс, звёздочка, вертикальная черта — его нужно экранировать.

String[] parts = "a.b.c".split("."); System.out.println(parts.length); // 0 — точка это "любой символ"

String[] fixed = "a.b.c".split("."); System.out.println(fixed.length); // 3 — экранировали точку

Что спросят следом: как split() обрабатывает limit по умолчанию (0) — trailing пустые строки убираются, а leading остаются. Та же ловушка с "|" и "+" в регулярках: любой спецсимвол нужно экранировать или использовать Pattern.quote().

split() — это regex-метод, даже когда разделитель выглядит как обычный символ.

Тренажёр: 600 вопросов, мок с таймером, план повторов

senior·base — что спрашивают на самом деле


В этом посте были ссылки, но мы их удалили по правилам Сетки