Mam tablicę znaków:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
Moje obecne rozwiązanie to zrobić
String b = new String(a);
Ale czy jest na to lepszy sposób?
Mam tablicę znaków:
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
Moje obecne rozwiązanie to zrobić
String b = new String(a);
Ale czy jest na to lepszy sposób?
Odpowiedzi:
Nie, to rozwiązanie jest absolutnie poprawne i bardzo minimalne.
Zauważ jednak, że jest to bardzo nietypowa sytuacja: ponieważ String
jest obsługiwany specjalnie w Javie, nawet "foo"
tak naprawdę jest String
. Tak więc potrzeba podzielenia ciągu na poszczególne char
litery i dołączenia ich z powrotem nie jest wymagana w normalnym kodzie.
Porównaj to do C / C ++, gdzie "foo"
masz pakiet char
s zakończony bajtem zerowym po jednej stronie i string
po drugiej stronie oraz wiele konwersji między nimi ze względu na starsze metody.
String text = String.copyValueOf(data);
lub
String text = String.valueOf(data);
jest prawdopodobnie lepszy (podsumowuje new String
połączenie).
String(char[])
lub ich wariant. Część kopiująca jest zrobiona w środku String(char[])
. Nie pozostawia to żadnych korzyści dla bezpośredniego połączenia poza symetrią z innymi valueOf
metodami.
String
zostanie zmieniona i / lub ulepszona w niekompatybilny sposób lub można wybrać kilka konkurencyjnych implementacji w czasie wykonywania, wówczas sens ma statyczna metoda fabryczna. Nie stanie się tak w przypadku tak niskiego poziomu, jak String
. Dlatego moim założeniem jest: Użyj najmniejszego odpowiedniego młotka, a nie największego z dostępnych.
CharSequence
interfejs, pokazuje, jak błędne jest twoje „nie stanie się z rzeczami niskiego poziomu, takimi jak string” - nie zmieniają tego, co dzieje się w łańcuchu, ponieważ wcześnie się do niego przywiązali, a teraz chcą nie mieliby.
String str = "wwwwww3333dfevvv";
char[] c = str.toCharArray();
Teraz, aby przekonwertować tablicę znaków na String, istnieją dwa sposoby.
Arrays.toString(c);
Zwraca ciąg [w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]
.
I:
String.valueOf(c)
Zwraca ciąg wwwwww3333dfevvv
.
Podsumowując : zwróć uwagę Arrays.toString(c)
, bo dostaniesz "[w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]"
zamiast "wwwwww3333dfevvv"
.
Łańcuch w java to tylko obiekt wokół tablicy znaków. Stąd a
char[]
jest identyczny z rozpakowanym ciągiem zawierającym te same znaki. Tworząc nowy ciąg znaków z tablicy znaków
new String(char[])
zasadniczo mówisz kompilatorowi, aby autoboxował obiekt String wokół twojej tablicy znaków.
Możesz użyć String.valueOf
metody.
Na przykład,
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);
Aby uzyskać więcej informacji na temat tablicy znaków do łańcucha, możesz znaleźć linki poniżej
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html
https://www.flowerbrackets.com/convert-char-array-to-string-java/
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]);
} }
}
}
//Given Character Array
char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
//Converting Character Array to String using String funtion
System.out.println(String.valueOf(a));
//OUTPUT : hello world
Konwertowanie dowolnego typu Array na String za pomocą funkcji Java 8 Stream
String stringValue =
Arrays.stream(new char[][]{a}).map(String::valueOf).collect(Collectors.joining());
Spróbuj tego
Arrays.toString(array)
Wystarczy użyć String.value lub podobnego poniżej;
private static void h() {
String helloWorld = "helloWorld";
System.out.println(helloWorld);
char [] charArr = helloWorld.toCharArray();
System.out.println(String.valueOf(charArr));
}
Możesz także użyć klasy StringBuilder
String b = new StringBuilder(a).toString();
Użycie String lub StringBuilder różni się w zależności od wymagań metody.
1 alternatywny sposób to:
String b = a + "";
toString
działa poprawnie char[]
. Może działać na niektórych określonych dostawcach i wersjach JVM.
a
i stworzenie innego obiektu String że Łączy się a.toString()
i""