Mediumstring

Чем String отличается от char[]?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

String — immutable объект-обёртка над byte[] (с Java 9 compact strings), множество методов, попадает в String pool. char[] — массив примитивов, mutable, нет методов.

// Пароли лучше в char[] — можно обнулить
char[] password = readPassword();
authenticate(password);
Arrays.fill(password, '\0');   // обнуляем, чтобы не осталось в heap

// String остается в heap/pool до GC, потенциально скомпрометирован
String pwd = readPassword();   // НЕЛЬЗЯ обнулить
  • String: toCharArray() — копия (defensive), new String(char[]) — из массива;
  • char[]: для паролей, низкоуровневых операций, без overhead объекта;
  • Memory: String = объект + массив, char[] = только массив;
  • Большинство кода — String, удобнее и безопаснее; для шифрования/RSA — char[]/byte[].

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.