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

у меня есть char массив:

char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};

мое текущее решение-сделать

String b = new String(a);

но наверняка есть лучший способ сделать это?

11 ответов


нет, это решение абсолютно правильное и очень минимальное.

заметьте, однако, что это очень необычная ситуация: Because String обрабатывается специально на Java, даже "foo" на самом деле String. Таким образом, необходимость разделения строки на отдельные chars и присоединиться к ним обратно не требуется в обычном коде.

сравните это с C/C++, где "foo" пакета из chars заканчивается нулевым байтом с одной стороны и string на другой стороне и многое преобразования между ними из-за устаревших методов.


String text = String.copyValueOf(data);

или

String text = String.valueOf(data);

, возможно, лучше (инкапсулирует new String звонок).


это преобразует массив символов обратно в строку:

char[] charArray = {'a', 'b', 'c'};
String str = String.valueOf(charArray);

String str = "wwwwww3333dfevvv";
char[] c = str.toCharArray();

теперь, чтобы преобразовать массив символов в строку, есть два способа.

Arrays.toString(c);

возвращает строку [w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v].

и:

String.valueOf(c)

возвращает строку wwwwww3333dfevvv.


строка в java-это просто объект вокруг массива символов. Отсюда a

char[]

идентичен распакованной строке с теми же символами. Создав новую строку из массива символов

new String(char[])

вы по существу говорите компилятору autobox строковый объект вокруг вашего массива символов.


package naresh.java;

public class TestDoubleString {

    public static void main(String args[]){
        String str="abbcccddef";    
        char charArray[]=str.toCharArray();
        int len=charArray.length;

        for(int i=0;i<len;i++){
            //if i th one and i+1 th character are same then update the charArray
            try{
                if(charArray[i]==charArray[i+1]){
                    charArray[i]='0';                   
                }}
                catch(Exception e){
                    System.out.println("Exception");
                }
        }//finally printing final character string
        for(int k=0;k<charArray.length;k++){
            if(charArray[k]!='0'){
                System.out.println(charArray[k]);
            }       }
    }
}

можно использовать String.valueOf метод.

например,

char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
String b = String.valueOf(a);
System.out.println("Char Array back to String is: " + b);

для получения дополнительной информации о char array to string вы можете ссылаться на ссылки ниже

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html

http://www.flowerbrackets.com/char-array-to-string-java-program/


попробуй такое

Arrays.toString(array)

попробуйте это:

CharSequence[] charArray = {"a","b","c"};

for (int i = 0; i < charArray.length; i++){
    String str = charArray.toString().join("", charArray[i]);
    System.out.print(str);
}

вы также можете использовать класс StringBuilder

String b = new StringBuilder(a).toString();

использование String или StringBuilder зависит от ваших требований к методу.


1 Альтернативный способ это сделать:

String b = a + "";