1. Gambaran keseluruhan
Dalam tutorial ringkas ini, kita akan membahas pelbagai cara untuk menukar array watak menjadi String di Java.
2. Pembentuk String
The String kelas mempunyai pembina yang menerima satu char lokasi sebagai hujah:
@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")); }
Ini adalah salah satu cara termudah untuk menukar array char ke String . Ini secara dalaman memanggil String # valueOf untuk membuat objek String .
3. String.valueOf ()
Dan mengenai nilaiOf (), kita boleh menggunakannya secara langsung:
@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")); }
String # copyValueOf adalah kaedah lain yang semestinya setara dengan kaedah valueOf () tetapi tidak penting hanya dalam beberapa keluaran Java pertama. Sehingga hari ini, kaedah copyValueOf () berlebihan dan kami tidak mengesyorkan menggunakannya.
4. StringBuilder 's toString ()
Bagaimana jika kita ingin membentuk String dari pelbagai array char ?
Kemudian, pertama-tama kita dapat membuat contoh StringBuilder dan menggunakan kaedah append (char []) untuk menambahkan semua kandungan bersama-sama.
Kemudian, kami akan menggunakan toString () kaedah untuk mendapatkan yang String perwakilan:
@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")); }
Kami dapat mengoptimumkan lagi kod di atas dengan menunjukkan StringBuilder dengan panjang tepat yang kami perlukan.
5. Java 8 Aliran
Dengan (objek T []) Arrays.stream kaedah, kita boleh membuka aliran lebih pelbagai jenis T .
Memandangkan kami mempunyai array Character , kami dapat menggunakan operasi Collectors.joining () untuk membentuk instance String :
@Test public void whenStreamCollectors_thenOK() { final Character[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' }; Stream charStream = Arrays.stream(charArray); String string = charStream.map(String::valueOf).collect(Collectors.joining()); assertThat(string, is("baeldung")); }
Perhatian dengan pendekatan ini adalah bahawa kita menggunakan nilaiOf () pada setiap elemen Karakter dan ia akan menjadi agak perlahan.
6. Joiner Pangkalan Biasa Jambu
Katakan bahawa rentetan yang perlu kita buat adalah rentetan yang dibatasi. Jambu biji memberi kami kaedah yang berguna:
@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")); }
Sekali lagi, perhatikan bahawa kaedah join () hanya akan menerima array Character dan bukan array char primitif .
7. Kesimpulannya
Dalam tutorial ini, kami meneroka cara menukar array watak tertentu ke representasi Stringnya di Java.
Seperti biasa, semua contoh kod boleh didapati di GitHub.