Hur man använder Java:s StringBuilder
Javas StringBuilder-klass kan användas istället för traditionella strängar. Till skillnad från traditionella strängar kan du med StringBuilder göra ändringar i en sträng utan att skapa ett nytt objekt. Ändringarna kan göras med hjälp av olika metoder.
Vad är Java:s StringBuilder?
Strängklassen i Java är oföränderlig och har inga underklasser. Ett alternativ till denna slutgiltiga klass är Javas StringBuilder. Den skapar en sekvens av tecken som kan ändras efter att den har skapats. På så sätt liknar Javas StringBuilder StringBuffer. De två klasserna har ett liknande syfte, men till skillnad från bufferten är StringBuilder inte synkroniserad. Det gör StringBuilder till ett bra val när man arbetar med enstaka trådar, eftersom den är mycket snabbare än StringBuffer. I den här handledningen presenterar vi StringBuilder i Java och visar några av dess många användningsområden.
Vad är syntaxen för Java:s StringBuilder?
Syntaxen för Java:s StringBuilder följer alltid samma mönster, som ser ut så här:
public final class StringBuilder
extends Object
implements Serializable, CharSequencejavaFör att förstå grunderna i hur klassen fungerar och vilket syfte den tjänar, är det bra att först titta på den traditionella String-klassen. När du har deklarerat ett objekt i String kan du inte längre ändra det objektet. Om du vill göra ändringar måste du skapa och spara ett helt nytt objekt. Detta skapar mycket dataspill och kan leda till försämrad prestanda. Om du istället använder StringBuilder i Java kan du göra ändringar i strängar utan att skapa en ny. Detta minskar slöseriet och förbättrar prestandan.
Vilka är konstruktörerna för Java:s StringBuilder?
Java:s StringBuilder har fyra konstruktorer som hjälper till att konvertera strängen till rätt format för klassen. De används också för konfiguration. Här är de fyra konstruktorerna och deras syften:
StringBuilder(): Skapar en tom StringBuilder med en maximal kapacitet på 16 teckenStringBuilder(int capacity): Skapar en StringBuilder utan tecken vars maximala kapacitet definieras med hjälp av kapacitetsargumentetStringBuilder(CharSequence seq): Skapar en strängbyggare med samma tecken som den lagrade teckensekvensenStringBuilder(String str): Skapar en StringBuilder med den sträng du anger
Låt oss titta på ett exempel för att se hur dessa konstruktörer fungerar i praktiken:
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());
}
}javaNär vi använder Java-kommandot System.out.println för att få utdata får vi följande:
First constructor = ABC
Second constructor = 5
Third constructor = ABCDEFGHIJK
Fourth constructor = ABCDEFGHIJKjavaVilka metoder används med StringBuilder i Java?
Det finns ett antal metoder som kan användas med Java-klassen StringBuilder. Nedan presenterar vi några av de viktigaste, med kodexempel.
append()
Metoden append() används för att lägga till en sträng till en annan. Den har olika parametrar. Så här fungerar den i praktiken:
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder("ABCDE");
str.append("FGHIJK");
System.out.println(str);
}
}javaResultatet blir följande:
ABCDEFGHIJKjavainsert()
Metoden insert() används i kombination med Javas StringBuilder för att infoga en sträng på en specifik plats. Här är ett exempel på hur det fungerar:
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder("ABCDE");
str.insert(1,"FGHIJK");
System.out.println(str);
}
}javaHär är resultatet:
AFGHIJKBCDEFGHIJKjavaHeltalet (i detta fall 1) används för att definiera den position där strängen ska infogas.
replace()
Metoden replace() ersätter en sträng eller en del av en sträng. Den definieras med hjälp av beginIndex och endIndex. Så här fungerar det i praktiken:
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);
}
}javaResultatet ser ut som följer:
AFGHIJKEjavareverse()
Metoden reverse() används för att placera den lagrade strängen i omvänd ordning. Så här fungerar det:
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder("ABCDE");
str.reverse();
System.out.println(str);
}
}javaHär är resultatet:
EDCBAjavadelete()
Du kan använda metoden delete() med Java:s StringBuilder för att radera hela eller delar av en sträng. Om du vill radera en del av strängen kan du göra det med beginIndex och 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);
}
}javaHär är resultatet:
AEjavacapacity()
Metoden capacity() ger dig det aktuella maximala teckenantalet för StringBuilder. Normalt är det 16. Om det ökas görs det vanligtvis med formeln ”aktuellt teckenantal * 2 + 2”. Så om det för närvarande är 16 multipliceras det med 2 (32) och sedan läggs 2 till. Du kan se det i vårt exempel:
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());
}
}javaResultatet ser ut som följer:
16
16
34javaensureCapacity()
Metoden ensureCapacity() säkerställer att antalet tillgängliga tecken är minst lika stort som det definierade värdet. Om så inte är fallet ökas kapaciteten med hjälp av formeln ovan, ”aktuellt teckenantal * 2 + 2”. Det kan du se i följande exempel:
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());
}
}javaHär är resultatet:
16
16
34
34
70javaFörst ser vi standardvärdet (16), sedan det värdet multiplicerat med 2 och adderat till 2 (34), och slutligen det nya värdet multiplicerat med 2 och adderat till 2.

