Sammenkoble strenger i Java

1. Introduksjon

Java tilbyr et betydelig antall metoder og klasser dedikert til sammenkobling Strenger.

I denne opplæringen vil vi dykke inn i flere av dem, så vel som skissere noen vanlige fallgruver og dårlig praksis.

2. StringBuilder

Først opp er ydmyke StringBuilder. Denne klassen gir en rekke Streng-bygningsverktøy som gjør det enkelt å jobbe med String manipulasjon.

La oss bygge et raskt eksempel på String sammenkobling ved hjelp av StringBuilder klasse:

StringBuilder stringBuilder = ny StringBuilder (100); stringBuilder.append ("Baeldung"); stringBuilder.append ("er"); stringBuilder.append ("fantastisk"); assertEquals ("Baeldung is awesome", stringBuilder.toString ());

Internt, StringBuilder opprettholder et foranderlig utvalg av tegn. I kodeeksemplet vårt har vi erklært at dette har en opprinnelig størrelse på 100 gjennom StringBuilder konstruktør. På grunn av denne størrelseserklæringen, har StringBuilder kan være en veldig effektivmåte å sammenkoble Strenger.

Det er også verdt å merke seg at StringBuffer klasse er den synkroniserte versjonen av StringBuilder.

Selv om synkronisering ofte er synonymt med trådsikkerhet, anbefales den ikke til bruk i flertrådede applikasjoner pga StringBuffer byggmønster. Mens individuelle samtaler til en synkronisert metode er trådsikre, er det ikke flere samtaler.

3. Tilleggsoperatør

Neste opp er tilleggsoperatøren (+). Dette er den samme operatøren som resulterer i tillegg av tall og er overbelastet for å sammenkoble når den brukes på Strenger.

La oss se raskt på hvordan dette fungerer:

String myString = "Den" + "raske" + "brune" + "reven ..."; assertEquals ("The quick brown fox ...", myString);

Ved første øyekast kan dette virke mye mer kortfattet enn StringBuilder alternativ. Når kildekoden kompileres, + -symbolet oversettes til kjeder av StringBuilder.append () ringer. På grunn av dette, blande StringBuilder og + metode av sammenkobling er ansett som dårlig praksis.

I tillegg String sammenkobling med + -operatøren i en sløyfe bør unngås. Siden String objektet er uforanderlig, vil hver samtale for sammenkobling resultere i en ny String objektet blir opprettet.

4. String Metoder

De String klassen selv gir en hel rekke metoder for sammenkobling Strenger.

4.1. String.concat

Ikke overraskende er den String.concat metoden er vår første anløpshavn når vi prøver å sammenkoble String gjenstander. Denne metoden returnerer a String objekt, så kjetting av metoden er en nyttig funksjon.

String myString = "Begge" .concat ("ustabile") .concat ("dverger") .concat ("jinx") .concat ("min") .concat ("gris") .concat ("quiz"); assertEquals ("Begge ustabile dvergene jinx min grisquiz", myString);

I dette eksemplet startes kjeden vår med en String bokstavelig, den konkat metoden lar oss deretter kjede samtalene for å legge videre Strenger.

4.2. String.format

Neste opp er String.format metode, som lar oss injisere en rekke Java Objekter inn i en String mal.

De String.format metodesignatur tar en enkelt String betegner vår mal. Dette malen inneholder ‘%’ tegn for å representere hvor de forskjellige Objekterskal plasseres innenfor den.

Når malen vår er erklært, den da tar en varargs Gjenstand array som injiseres inn i malen.

La oss se hvordan dette fungerer med et raskt eksempel:

String myString = String.format ("% s% s% .2f% s% s,% s ...", "I", "ate", 2.5056302, "blåbær", "paier", "oops"); assertEquals ("Jeg spiste 2,51 blåbærpai, oops ...", myString);

Som vi kan se ovenfor, har metoden injisert vår Strenger i riktig format.

4.3. String. Bli med (Java 8+)

Hvis vår applikasjonen kjører på Java 8eller over, kan vi dra nytte av String. Bli med metode. Med dette kan vi bli med i en rekke Strenger med en felles skillelinje, for å sikre at ingen mellomrom blir savnet.

String [] strings = {"I'm", "running", "out", "of", "pangrams!"}; String myString = String.join ("", strenger); assertEquals ("Jeg går tom for pangram!", myString); 

En stor fordel med denne metoden er ikke å måtte bekymre deg for skillet mellom strengene våre.

5. StringJoiner (Java 8+)

StringJoiner trekker ut alt String. Bli med funksjonalitet til en brukervennlig klasse. De konstruktør tar en skillelinje, med et valgfritt prefiks og suffiks. Vi kan legge til Strenger bruker velnavnet legge til metode.

StringJoiner fruitJoiner = ny StringJoiner (","); fruitJoiner.add ("Epler"); fruitJoiner.add ("Appelsiner"); fruitJoiner.add ("Bananas"); assertEquals ("Epler, appelsiner, bananer", fruitJoiner.toString ());

Ved å bruke denne klassen, i stedet for String. Bli med metode, vi kan legge til Strenger når programmet kjører; Det er ikke nødvendig å opprette matrisen først!

Gå over til vår artikkel om StringJoiner for mer informasjon og eksempler.

6. Arrays.toString

Om temaet arrays, Array klasse inneholder også en hendig toString metode som pent formaterer en rekke objekter. De Arrays.toString metoden kaller også toString metode for ethvert lukket objekt - så vi må sørge for at vi har en definert.

String [] myFavouriteLanguages ​​= {"Java", "JavaScript", "Python"}; String toString = Arrays.toString (myFavouriteLanguages); assertEquals ("[Java, JavaScript, Python]", toString);

Dessverre, den Arrays.toString metoden kan ikke tilpasses og bare utganger a String innkapslet i firkantede parenteser.

7. Samlere. Blir med (Java 8+)

Til slutt, la oss ta en titt på Samlere. Blir med metode som lar oss trakte utdataene fra a Strøm inn i en singel String.

Liste awesomeAnimals = Arrays.asList ("Shark", "Panda", "Armadillo"); String animalString = awesomeAnimals.stream (). Collect (Collectors.joining (",")); assertEquals ("Shark, Panda, Armadillo", animalString);

Bruk av strømmer låser opp all funksjonaliteten som er knyttet til Java 8 Strøm API, for eksempel filtrering, kartlegging, iterering og mer.

8. Pakk opp

I denne artikkelen har vi tatt en dykk dykk ned i mange klasser og metoder som brukes til å sammenkoble Strengerpå Java-språket.

Som alltid er kildekoden tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found