Встречается на 12% собеседований по Java

Что такое строка в Java

Строка представляет собой последовательность символов и является объектом класса `String`. Они неизменяемы (immutable), что означает, что однажды созданный объект `String` не может быть изменён. Если вам нужно изменить строку, на самом деле создаётся новый объект `String` с изменённым содержимым.

Основные особенности строк:

  • Неизменяемость: Как только она создана, её содержимое не может быть изменено. Любые операции, кажущиеся изменяющими строку, на самом деле создают новый объект `String`.
  • String Pool: Для экономии памяти использует механизм "пула строк" (String Pool). Это специальная область в куче (Heap), где хранятся все уникальные литералы строк, используемые в программе. Если строка уже существует в пуле, Java использует ту же ссылку, вместо создания нового объекта `String`.
  • Кодировка: Строки в Java кодируются в UTF-16, где каждый символ (в основном) занимает 2 байта.

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

Их можно создавать разными способами, например:

java
String s1 = "Hello"; // Создание строки через литерал - строка помещается в пул строк
String s2 = new String("Hello"); // Явное создание нового объекта строки - не использует пул строк

Работа со строками:

Класс `String` предоставляет множество методов для работы со строками, включая поиск подстроки, сравнение строк, преобразование регистра, конкатенацию (слияние строк) и многое другое.

Примеры некоторых операций со строками:

java
String str = "Java";
String upperStr = str.toUpperCase(); // Преобразует все символы в верхний регистр
boolean startsWithJ = str.startsWith("J"); // Проверяет, начинается ли строка с символа "J"
String combined = str + " Programming"; // Конкатенация строк

Важно помнить:

  • Использование оператора `+` для многократной конкатенации строк в цикле может быть неэффективным по производительности из-за создания множества временных объектов `String`. В таких случаях рекомендуется использовать `StringBuilder` или `StringBuffer`.
  • Для сравнения строк по содержимому следует использовать метод `equals()`, а не оператор `==`, который сравнивает ссылки на объекты.

Строки — мощный инструмент для работы с текстовыми данными, поддерживающий широкий спектр операций и обеспечивающий удобство и безопасность использования благодаря своей неизменяемости.

March 9, 2024, easyoffer

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы