1. Structuur van de Stringklas

Vandaag gaan we het hebben over de Stringklas. Na ints is de klasse String de meest populaire klasse in Java. Het wordt echt overal gebruikt. Het heeft een heleboel handige methoden die u maar beter kunt kennen.

De Stringklasse is de enige andere klasse dan primitieve typen waarvan de letterlijke waarden in een switchinstructie kunnen worden gebruikt; de compiler gaat op een speciale manier om met het optellen van strings en String-objecten; Stringobjecten worden op een speciale manier in het geheugen opgeslagen. Kortom, de Stringklas is een heel speciale klas.

De klasse heeft ook Stringeen 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 om te doen. Welnu, we beginnen bij de kern van dit ecosysteem: de organisatie van de Stringklas.

Reeks tekens

De structuur van de Stringklasse is eigenlijk heel eenvoudig: er zit een karakterarray (char array) in die alle karakters van de string opslaat. Zo wordt bijvoorbeeld het woord 'Hallo' opgeslagen:

Structuur van de klasse String
Belangrijk!

Eigenlijk is dit niet helemaal nauwkeurig. Omdat de Stringklasse erg belangrijk is, gebruikt deze veel optimalisaties en worden de gegevens intern opgeslagen, niet als een tekenarray, maar gewoon als een byte-array.


2. Methoden van de Stringklas

De Stringklasse heeft veel methoden: hij heeft alleen al 18 constructors! Daarom noemen we hieronder alleen de meest elementaire:

methoden Beschrijving
int length()
Retourneert het aantal tekens in de tekenreeks
boolean isEmpty()
Controleert of de tekenreeks een lege tekenreeks is
boolean isBlank()
Controleert of de tekenreeks alleen witruimtetekens bevat: spatie, tab, nieuwe regel, enz.
char charAt(int index)
Retourneert het teken op de indexpositie in de tekenreeks.
char[] toCharArray()
Retourneert een matrix van de tekens (een kopie) waaruit de tekenreeks bestaat
byte[] getBytes()
Converteert een tekenreeks naar een reeks bytes en retourneert de reeks bytes.
String[] split(String regex)
Splitst een tekenreeks in meerdere subtekenreeksen.
String join(CharSequence delimiter, elements)
Voegt meerdere subtekenreeksen samen
String intern()
Zet een string in de string pool.

Meer informatie over constructors vindt u in het artikel Java Constructors .

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: een char-array gebruiken

Code Notities
Scanner console = new Scanner(System.in);
String path = console.nextLine();

char[] chars = path.toCharArray();
for (int i = 0; i < chars.length; i++)
   if (chars[i] == '/')
      chars[i] = '\\';

String result = new String(chars);
System.out.println(result);
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: - met behulp van de methoden split()enjoin()

Code Notities
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String[] array = path.split("/");


String result = String.join("\\", array);


System.out.println(result);
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
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String result = path.replace('/', '\\');

System.out.println(result);
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.