Programmeren in Java/Strings
Bewerkingen op tekenreeksen (in het Engels: String) zijn altijd een belangrijk onderdeel van algemeen toepasbare programmeertalen. In Java is de class String de representatie van een tekenreeks. Een String in Java is onveranderlijk, dat wil zeggen dat de tekenreeks die wordt gerepresenteerd door een String-object niet kan wijzigen na de creatie van het object. We zullen nu een aantal voorbeelden laten zien van Strings en bewerkingen met Strings.
Veelgebruikte methods
bewerkenpublic class StringDemo1 {
public static void main(String[] args) {
String myString = new String("abc");
String myOtherString = new String("abc");
System.out.println(myString.charAt(0));
System.out.println(myString.length());
System.out.println(myOtherString.toUpperCase());
System.out.println(myOtherString);
}
}
Uitvoering van dit programma levert de volgende uitvoer op:
a 3 ABC abc
Met name de laatste twee zijn interessant: als we eerst toUpperCase() hebben uitgevoerd, waarom bestaat myString dan toch nog uit lower case tekens? Het antwoord in deze vraag is in de inleiding van dit hoofdstuk al gegeven: het String object waar myString aan refereert kan nooit meer iets anders bevatten dan de tekens abc. De uitvoer die we zien als gevolg van het statement op regel 7 is de weergave van een nieuwe String. Dit String object is na uitvoering van het statement overigens niet meer te benaderen, want er is geen variabele die er aan refereert.
De overige methods wijzen zich redelijk vanzelf: charAt() (regel 5) laat het karakter zien op en bepaalde plaats in de String. Een String kan beschouwd worden als een array van karakters, en de index van deze 'array' begint ook met 0.
length() geeft de lengte van de String aan, toUpperCase() maakt (mogelijk) een nieuwe String waarbij alle kleine letters zijn omgezet in hoofdletters.
Split
bewerkenSplit heeft als doel om een string op te splitsen in een array van substrings.
public class StringSplit1 {
public static void main(String[] args) {
String tekst = "Dit,is,tekst.";
String[] uittekst = tekst.split(",");
System.out.println(uittekst[0]);
System.out.println(uittekst[1]);
System.out.println(uittekst[2]);
}
}
Als uitvoer krijg je:
Dit is tekst.
Als parameter voor de methode split moet je een string meegeven, deze string moet bevatten waarmee je jouw string wilt opsplitsen in dit geval is dit "," (dit kunnen ook meerdere tekens zijn). Telkens wanneer Java de komma tegenkomt zal de string worden gesplitst. De methode split geeft dan een array van strings terug, die kun je dan één voor één tonen op het scherm of er bewerkingen mee uitvoeren.
charAt
bewerkenMet charAt kun je een bepaald teken in de string verkrijgen.
public class StringCharAt {
public static void main(String[] args) {
String tekst = "test";
System.out.println("Eerste teken: " + tekst.charAt(0));
System.out.println("Tweede teken: " + tekst.charAt(1));
System.out.println("Derde teken: " + tekst.charAt(2));
System.out.println("Vierde teken: " + tekst.charAt(3));
}
}
StringBuffer, StringBuilder
bewerkenZoals we in het voorgaande al zagen is een String niet aan te passen. Om toch gemakkelijk Strings op te kunnen bouwen zijn de klassen StringBuffer en de StringBuilder beschikbaar. Deze zijn vrijwel aan elkaar gelijk in functionaliteit. Het voornaamste verschil is dat StringBuffer thread-safe is en StringBuilder niet. Zolang er niet door meerdere threads tegelijk aan een String wordt gebouwd is het het beste om de StringBuilder te gebruiken. Deze is overigens geïntroduceerd in Java 5, en is niet beschikbaar in de oudere versies.
public class StringBuilder1 {
public static void main(String[] args) {
StringBuilder myBuilder = new StringBuilder("abc");
myBuilder.append(3);
myBuilder.setCharAt(0, 'A');
System.out.println(myBuilder);
}
}
Dit programma levert als uitvoer Abc3. Met name de methoden append() worden veel gebruikt. Het voordeel van het gebruiken van een StringBuilder boven het aan elkaar plakken van String objecten met de = operator is dat er niet telkens nieuwe objecten aangemaakt worden.