Строки являются неизменяемыми, char [] - нет. Если вы определяете это как общедоступную «константу» в классе, тогда String является реальной константой.
Например, если у вас есть это:
public class MyClass {
public static final char[] CODE_LETTERS = {'h', 'e', 'l', 'l', 'o'};
....
}
Я могу быть подлым и сделать это:
MyClass.CODE_LETTERS[0] = 'Q';
Бэм, я изменил значение твоей "константы".
Ключевое слово final
влияет только на ссылку на массив, оно не применяется к элементам массива. Я все время вижу похожую ошибку с Collections.unmodifiableList()
, люди думают, что это защищает их список, но клиентский код все еще может получить доступ и изменить элементы списка.
Итак, чтобы ответить на ваш вопрос, используйте строку.