De String­Buil­der-klasse van Java kan worden gebruikt in plaats van tra­di­ti­o­ne­le strings. In te­gen­stel­ling tot tra­di­ti­o­ne­le strings kunt u met String­Buil­der wij­zi­gin­gen aan­bren­gen in een string zonder een nieuw object te maken. De wij­zi­gin­gen kunnen met ver­schil­len­de methoden worden aan­ge­bracht.

Wat is Java’s String­Buil­der?

De string­klas­se in Java is on­ver­an­der­lijk en heeft geen sub­klas­sen. Een al­ter­na­tief voor deze de­fi­ni­tie­ve klasse is Java’s String­Buil­der. Deze maakt een reeks tekens aan die na het aanmaken nog kan worden gewijzigd. In dit opzicht lijkt Java’s String­Buil­der op String­Buf­fer. De twee klassen hebben een ver­ge­lijk­baar doel, maar in te­gen­stel­ling tot de buf­fer­op­tie wordt String­Buil­der niet ge­syn­chro­ni­seerd. Dat maakt String­Buil­der een goede keuze bij het werken met enkele threads, omdat het veel sneller is dan String­Buf­fer. In deze tutorial laten we u ken­nis­ma­ken met String­Buil­der in Java en laten we u enkele van de vele toe­pas­sin­gen zien.

Wat is de syntaxis van Java’s String­Buil­der?

De syntaxis van Java’s String­Buil­der volgt altijd hetzelfde patroon, dat er als volgt uitziet:

public final class StringBuilder
	extends Object
		implements Serializable, CharSequence
java

Om de ba­sis­prin­ci­pes van hoe de klasse werkt en welk doel deze dient te begrijpen, is het handig om eerst naar de tra­di­ti­o­ne­le String-klasse te kijken. Zodra u een object in String hebt ge­de­cla­reerd, kunt u dat object niet meer wijzigen. Als u wij­zi­gin­gen wilt aan­bren­gen, moet u een geheel nieuw object maken en opslaan. Dit leidt tot veel ver­spil­ling van gegevens en kan de pres­ta­ties ver­min­de­ren. Als je in plaats daarvan String­Buil­der in Java gebruikt, kun je wij­zi­gin­gen aan­bren­gen in strings zonder een nieuwe te maken. Dit ver­min­dert ver­spil­ling en verbetert de pres­ta­ties.

Wat zijn de con­struc­tors voor Java’s String­Buil­der?

Java’s String­Buil­der heeft 4 con­struc­tors die helpen bij het con­ver­te­ren van de string naar het juiste formaat voor de klasse. Ze worden ook gebruikt voor con­fi­gu­ra­tie. Hier zijn de vier con­struc­tors en hun doel­ein­den:

  • StringBuilder(): Genereert een lege String­Buil­der met een maximale ca­pa­ci­teit van 16 tekens
  • StringBuilder(int capacity): Maakt een String­Buil­der zonder tekens waarvan de maximale ca­pa­ci­teit wordt ge­de­fi­ni­eerd met behulp van het ca­pa­ci­teits­ar­gu­ment
  • StringBuilder(CharSequence seq): Genereert een string builder met dezelfde tekens als de op­ge­sla­gen te­ken­reeks
  • StringBuilder(String str): Maakt een String­Buil­der met de string die u invoert

Laten we eens kijken naar een voorbeeld om te zien hoe deze con­struc­tors in de praktijk werken:

public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder();
	str.append("ABC");
	System.out.println("First constructor  = " + str.toString());
	StringBuilder str2 = new StringBuilder(5);
	System.out.println("Second constructor  = " + str2.capacity());
	StringBuilder str3 = new StringBuilder("ABCDEFGHIJK");
	System.out.println("Third constructor = " + str3.toString());
	StringBuilder str4 = new StringBuilder(str3.toString());
	System.out.println("Fourth constructor = " + str4.toString());
	}
}
java

Wanneer we het Java-commando System.out.println gebruiken om de uitvoer te krijgen, krijgen we het volgende:

First constructor = ABC
Second constructor = 5
Third constructor = ABCDEFGHIJK
Fourth constructor = ABCDEFGHIJK
java

Welke methoden worden gebruikt met String­Buil­der in Java?

Er zijn een aantal methoden die kunnen worden gebruikt met de String­Buil­der-klasse van Java. Hieronder in­tro­du­ce­ren we enkele van de be­lang­rijk­ste, met co­de­voor­beel­den.

append()

De append() wordt gebruikt om de ene string aan de andere toe te voegen. Deze methode heeft ver­schil­len­de pa­ra­me­ters. Zo werkt het in de praktijk:

public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder("ABCDE");
	str.append("FGHIJK");
	System.out.println(str);
	}
}
java

De uitvoer is als volgt:

ABCDEFGHIJK
java

insert()

De insert() wordt gebruikt in com­bi­na­tie met Java’s String­Buil­der om een string op een specifiek punt in te voegen. Hier is een voorbeeld van hoe het werkt:

public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder("ABCDE");
	str.insert(1,"FGHIJK");
	System.out.println(str);
	}
}
java

Dit is de uitvoer:

AFGHIJKBCDEFGHIJK
java

Het gehele getal (in dit geval 1) wordt gebruikt om de positie te de­fi­ni­ë­ren waar de te­ken­reeks wordt ingevoegd.

replace()

De methode replace() vervangt een te­ken­reeks of een deel van een te­ken­reeks. Deze wordt ge­de­fi­ni­eerd met behulp van beginIndex en endIndex. Zo werkt het in de praktijk:

public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder("ABCDE");
	str.replace(1,4,"FGHIJK");
	System.out.println(str);
	}
}
java

De uitvoer ziet er als volgt uit:

AFGHIJKE
java

reverse()

De reverse() -methode wordt gebruikt om de op­ge­sla­gen te­ken­reeks in om­ge­keer­de volgorde te plaatsen. Zo werkt het:

public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder("ABCDE");
	str.reverse();
	System.out.println(str);
	}
}
java

Dit is de uitvoer:

EDCBA
java

delete()

Je kunt de delete() gebruiken met Java’s String­Buil­der om een string geheel of ge­deel­te­lijk te ver­wij­de­ren. Als je een deel van de string wilt ver­wij­de­ren, kun je dat doen met beginIndex en endIndex.

public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder("ABCDE");
	str.delete(1,4);
	System.out.println(str);
	}
}
java

Dit is de uitvoer:

AE
java

capacity()

capacity() geeft je het huidige maximale aantal tekens voor String­Buil­der. Normaal gesproken is dat 16. Als dit wordt verhoogd, gebeurt dat meestal met behulp van de formule ‘huidig aantal tekens * 2 + 2’. Dus als het momenteel 16 is, wordt het ver­me­nig­vul­digd met 2 (32) en wordt er ver­vol­gens 2 bij opgeteld. Dat kun je zien in ons voorbeeld:

public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder();
System.out.println(str.capacity());
str.append("ABCDE");
System.out.println(str.capacity());
	str.append("This is another example");
	System.out.println(str.capacity());
	}
}
java

De uitvoer ziet er als volgt uit:

16
16
34
java

ensureCapacity()

ensureCapacity() zorgt ervoor dat het aantal be­schik­ba­re tekens minimaal gelijk is aan de ge­de­fi­ni­eer­de waarde. Als dat niet het geval is, wordt de ca­pa­ci­teit vergroot met behulp van de bo­ven­staan­de formule: ‘huidig aantal tekens * 2 + 2’. Dat kunt u zien in het volgende voorbeeld:

public class Main {
	public static void main(String[] argv) throws Exception {
	StringBuilder str = new StringBuilder();
System.out.println(str.capacity());
str.append("ABCDE");
System.out.println(str.capacity());
	str.append("This is another example");
	System.out.println(str.capacity());
	str.ensureCapacity(5);
	System.out.println(str.capacity());
	str.ensureCapacity(40);
	System.out.println(str.capacity());
	}
}
java

Dit is de uitvoer:

16
16
34
34
70
java

Eerst zien we de stan­daard­waar­de (16), ver­vol­gens wordt die waarde ver­me­nig­vul­digd met 2 en opgeteld bij 2 (34), en ten slotte wordt die nieuwe waarde ver­me­nig­vul­digd met 2 en opgeteld bij 2.

Ga naar hoofdmenu