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 подскажет развёрнутый ответ в реальном времени.