Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как превратить строку в массив символов и обратно

Короткий ответ

toCharArray() даёт массив символов, а new String(array) или String.valueOf(array) собирает строку обратно:

void main() {
    char[] letters = "java".toCharArray();
    letters[0] = 'J';
 
    IO.println(letters.length);
    IO.println(new String(letters));
}

Результат:

4
Java

Отсортировать буквы

С массивом можно делать то, чего нельзя со строкой, например сортировать. Так проверяют анаграммы:

String sorted(String word) {
    char[] chars = word.toCharArray();
    Arrays.sort(chars);
    return new String(chars);
}
 
void main() {
    IO.println(sorted("listen"));
    IO.println(sorted("listen").equals(sorted("silent")));
}

Результат:

eilnst
true

Перебор без массива

Чтобы просто пройти по символам, массив не нужен — используйте charAt() или chars():

void main() {
    String word = "abc";
    word.chars().forEach(c -> IO.println((char) c + " = " + c));
}

Результат:

a = 97
b = 98
c = 99

Список символов

Иногда удобнее List<Character>:

void main() {
    List<Character> chars = "hello".chars().mapToObj(c -> (char) c).toList();
    IO.println(chars);
}

Результат:

[h, e, l, l, o]

Частая ошибка

Напечатать массив через toString(). Для char[] печать через IO.println() работает, но склейка со строкой выводит адрес объекта:

void main() {
    char[] letters = {'h', 'i'};
    IO.println("Letters: " + letters);
    IO.println("Letters: " + Arrays.toString(letters));
}

Результат:

Letters: [C@2df32bf7
Letters: [h, i]

Первая строка у вас будет другой — после [C@ идёт случайный хеш-код. Используйте Arrays.toString() или new String(letters).

Функции из этого ответа

  • String.toCharArray() — Копирует символы строки в новый массив char[].
  • String.chars() — Возвращает поток кодов символов строки.
  • String.valueOf() — Превращает значение любого типа в строку.
  • String.charAt() — Возвращает символ строки по индексу.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.