Converteer Character Array naar String in Java

1. Overzicht

In deze korte zelfstudie behandelen we verschillende manieren om een ​​tekenreeks naar een Draad in Java.

2. String Constructor

De Draad klasse heeft een constructor die een char array als een argument:

@Test openbare leegte whenStringConstructor_thenOK () {final char [] charArray = {'b', 'a', 'e', ​​'l', 'd', 'u', 'n', 'g'}; String string = nieuwe String (charArray); assertThat (string, is ("baeldung")); }

Dit is een van de gemakkelijkste manieren om een char array naar een Draad. Het roept intern op Tekenreeks # waardeVan om een Draad voorwerp.

3. String.valueOf ()

En over gesproken waarde van(), we kunnen het zelfs direct gebruiken:

@Test openbare leegte whenStringValueOf_thenOK () {final char [] charArray = {'b', 'a', 'e', ​​'l', 'd', 'u', 'n', 'g'}; String string = String.valueOf (charArray); assertThat (string, is ("baeldung")); }

Tekenreeks # copyValueOf is een andere methode die semantisch equivalent is aan de waarde van() methode, maar had alleen enige betekenis in de eerste paar Java-releases. Vanaf vandaag, de copyValueOf () methode is overbodig en we raden het gebruik ervan af.

4. StringBuilder‘S toString ()

Wat als we een Draad uit een reeks van char arrays?

Vervolgens kunnen we eerst een StringBuilder instantie en gebruik zijn toevoegen (char []) methode om alle inhoud bij elkaar te voegen.

Later gebruiken we de toString () methode om zijn Draad vertegenwoordiging:

@Test openbare leegte whenStringBuilder_thenOK () {final char [] [] arrayOfCharArray = {{'b', 'a'}, {'e', 'l', 'd', 'u'}, {'n', 'g'}}; StringBuilder sb = nieuwe StringBuilder (); voor (char [] subArray: arrayOfCharArray) {sb.append (subArray); } assertThat (sb.toString (), is ("baeldung")); }

We kunnen de bovenstaande code verder optimaliseren door het StringBuilder van de exacte lengte die we nodig hebben.

5. Java 8-streams

Met Arrays.stream (T [] -object) methode, kunnen we een stream openen over een reeks typen T.

Gezien het feit dat we een Karakter matrix, we kunnen de Collectors.joining () operatie om een Draad voorbeeld:

@Test openbare leegte whenStreamCollectors_thenOK () {laatste teken [] charArray = {'b', 'a', 'e', ​​'l', 'd', 'u', 'n', 'g'}; Stroom charStream = Arrays.stream (charArray); String string = charStream.map (String :: valueOf) .collect (Collectors.joining ()); assertThat (string, is ("baeldung")); }

Het voorbehoud bij deze benadering is dat we een beroep doen op de waarde van() over elk Karakter element en dus zal het behoorlijk traag zijn.

6. Guava gemeenschappelijke basis Schrijnwerker

Laten we echter zeggen dat de tekenreeks die we moeten maken een tekenreeks met scheidingstekens is. Guava geeft ons een handige methode:

@Test openbare leegte whenGuavaCommonBaseJoiners_thenOK () {laatste teken [] 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")); }

Nogmaals, let op dat de toetreden () methode accepteert alleen een Karakter array en niet de primitieve char array.

7. Conclusie

In deze zelfstudie hebben we manieren onderzocht om een ​​bepaalde tekenreeks naar zijn Draad vertegenwoordiging in Java.

Zoals gewoonlijk zijn alle codevoorbeelden te vinden op GitHub.