"Wat denk je, Amigo? Wat is de meest populaire Java-klasse na int?"
"Je gaf me al een spoiler in de titel van de les, Ellie. Het is String
!"
"Inderdaad, het is een spoiler. String
wordt absoluut overal gebruikt. Het heeft een heleboel handige methoden die je maar beter kunt kennen.
"De String
klasse is de enige andere klasse dan primitieve typen waarvan de letterlijke waarden in een switch
statement kunnen worden gebruikt; de compiler behandelt stringoptellingen en String-objecten op een speciale manier; String
objecten worden op een speciale manier opgeslagen in het geheugen. In wezen String
is de klasse een zeer speciale klasse.
"De klasse heeft ook String
een aantal hulpklassen die tot doel hebben het werken met strings in Java verder te vereenvoudigen. Als je dit allemaal leert, zullen veel dingen echt veel gemakkelijker voor je worden."
"Ik kan niet wachten."
"Nou, we beginnen bij de kern van dit ecosysteem - de organisatie van de String
klasse. De structuur van de String
klasse is eigenlijk heel eenvoudig: binnenin is een karakterarray ( char
array) die alle karakters van de string opslaat. Voor zo wordt bijvoorbeeld het woord 'Hallo' opgeslagen:

Het is belangrijk.
Eigenlijk is dit niet helemaal nauwkeurig. Omdat de String
klasse erg belangrijk is, gebruikt deze veel optimalisaties en worden de gegevens intern opgeslagen, niet als een tekenarray, maar gewoon als een byte-array.
Methoden van de klasse String
De String
klasse heeft veel methoden: hij heeft alleen al 18 constructors! Dus hieronder zal ik alleen de meest gebruikte opsommen:
methoden | Beschrijving |
---|---|
|
Retourneert het aantal tekens in de tekenreeks |
|
Controleert of de tekenreeks een lege tekenreeks is |
|
Controleert of de tekenreeks alleen witruimtetekens bevat: spatie, tab, nieuwe regel, enz. |
|
Retourneert het teken op de indexpositie in de tekenreeks. |
|
Retourneert een array van de tekens (een kopie) waaruit de tekenreeks bestaat |
|
Converteert een tekenreeks naar een reeks bytes en retourneert de reeks bytes. |
|
Splitst een tekenreeks in meerdere subtekenreeksen. |
|
Voegt meerdere subtekenreeksen samen |
|
Plaatst een string in de stringpool. |
"Dat ziet er heel goed uit!"
"Laten we een programma schrijven dat een bestandspad converteert van Unix-stijl naar Windows-stijl. Unix gebruikt het /
teken om mappen te scheiden, terwijl Windows het \
teken gebruikt.
Oplossing 1.char
Een array gebruiken
Code | Notities |
---|---|
|
Maak een Scanner-object Lees een regel van de console Converteer een tekenreeks naar een tekenarray Loop over de tekens Als het teken is / , vervang het dan door \ . Vergeet het ontsnappen niet. Maak een nieuwe tekenreeks op basis van de tekenreeks. Geef de tekenreeks weer. |
Oplossing 2. De methodes split()
en gebruiken join()
:
Code | Notities |
---|---|
|
Maak een Scanner-object Lees een regel van de console Converteer tekenreeks naar een reeks tekenreeksen . Het / teken wordt gebruikt als scheidingsteken (de twee extra schuine strepen zijn het resultaat van dubbele escape). Voeg alle tekenreeksen in de reeks tekenreeksen samen . De \ wordt gebruikt als scheidingsteken (we zien dat het ontsnapt is). Geef de tekenreeks weer. |
Oplossing 3. Met behulp van de replace(char oldChar, char newChar)
methode:
Code | Notities |
---|---|
|
Maak een Scanner-object Lees een regel van de console Vervang gewoon het ene teken door het andere (het tweede is een escape-teken) Geef de tekenreeks weer. |
"Ik vond de derde oplossing het leukst. Maar ik zal ze alle drie oefenen."
"Goed gedaan, Amigo. Ik zie dat je al ongeduldig bent om je nieuwe kennis in de praktijk te brengen. De les is voorbij."
GO TO FULL VERSION