Автор оригинала: Shubhra Srivastava.
1. Обзор
В этом кратком руководстве мы рассмотрим различные способы преобразования массива символов в Строку на Java.
2. Строковый конструктор
Класс String имеет конструктор , который принимает массив char в качестве аргумента:
@Test public void whenStringConstructor_thenOK() { final char[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' }; String string = new String(charArray); assertThat(string, is("baeldung")); }
Это один из самых простых способов преобразования массива char в Строку . Он внутренне вызывает String#valueOf для создания String объекта.
3. Строка.Значение()
И говоря о значении(), мы даже можем использовать его напрямую:
@Test public void whenStringValueOf_thenOK() { final char[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' }; String string = String.valueOf(charArray); assertThat(string, is("baeldung")); }
Строка#copyValueOf – это еще один метод, семантически эквивалентный методу valueOf () , но имевший какое-либо значение только в первых нескольких выпусках Java. На сегодняшний день метод copyValueOf() является избыточным, и мы не рекомендуем его использовать.
4. toString построителя строк()
Что делать, если мы хотим сформировать Строку из массива символов массивов?
Затем мы можем сначала создать экземпляр StringBuilder и использовать его метод append(char[]) для добавления всего содержимого вместе.
Позже мы будем использовать метод toString () , чтобы получить его Строковое представление:
@Test public void whenStringBuilder_thenOK() { final char[][] arrayOfCharArray = { { 'b', 'a' }, { 'e', 'l', 'd', 'u' }, { 'n', 'g' } }; StringBuilder sb = new StringBuilder(); for (char[] subArray : arrayOfCharArray) { sb.append(subArray); } assertThat(sb.toString(), is("baeldung")); }
Мы можем дополнительно оптимизировать приведенный выше код, создав экземпляр StringBuilder нужной нам длины.
5. Потоки Java 8
С помощью метода Arrays.stream(объект T []) мы можем открыть поток над массивом типа T .
Учитывая, что у нас есть Символ массив, мы можем использовать операцию Collectors.joining() для формирования Строки экземпляра:
@Test public void whenStreamCollectors_thenOK() { final Character[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' }; StreamcharStream = Arrays.stream(charArray); String string = charStream.map(String::valueOf).collect(Collectors.joining()); assertThat(string, is("baeldung")); }
Предостережение при таком подходе заключается в том, что мы вызываем значение() над каждым Символом элементом, и поэтому это будет довольно медленно.
6. Столяр на Общей основе Из Гуавы
Допустим, однако, что строка, которую нам нужно создать, является строкой с разделителями. Гуава дает нам удобный метод:
@Test public void whenGuavaCommonBaseJoiners_thenOK() { final Character[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' }; String string = Joiner.on("|").join(charArray); assertThat(string, is("b|a|e|l|d|u|n|g")); }
Опять же, обратите внимание, что метод join() будет принимать только Символьный массив, а не примитивный символ массив.
7. Заключение
В этом уроке мы рассмотрели способы преобразования заданного массива символов в его Строковое представление в Java.
Как обычно, все примеры кода можно найти на GitHub .