A Java StringBuilder használata
A Java StringBuilder osztálya a hagyományos karakterláncok helyett használható. A hagyományos karakterláncokkal ellentétben a StringBuilder lehetővé teszi a karakterláncok módosítását új objektum létrehozása nélkül. A módosítások különböző módszerekkel végezhetők el.
Mi az a Java StringBuilder?
A Java string osztálya megváltoztathatatlan és nincs alosztálya. Ennek a végleges osztálynak az egyik alternatívája a Java StringBuilder. Ez egy karakterekből álló sorozatot hoz létre, amely létrehozása után megváltoztatható. Ebben a tekintetben a Java StringBuilder hasonló a StringBufferhez. A két osztály célja hasonló, de a buffer opcióval ellentétben a StringBuilder nem szinkronizált. Ezért a StringBuilder jó választás egy szálas munkavégzéshez, mivel sokkal gyorsabb, mint a StringBuffer. Ebben az oktatóanyagban bemutatjuk a Java StringBuilder osztályt, és megmutatjuk néhány felhasználási lehetőségét.
Mi a Java StringBuilder szintaxisa?
A Java StringBuilder szintaxisa mindig ugyanazt a mintát követi, amely így néz ki:
public final class StringBuilder
extends Object
implements Serializable, CharSequencejavaAhhoz, hogy megértsük az osztály működésének alapjait és célját, érdemes először megnézni a hagyományos String osztályt. Miután deklaráltunk egy objektumot a String osztályban, azt már nem lehet megváltoztatni. Ha változtatni szeretnénk, akkor egy teljesen új objektumot kell létrehoznunk és elmentenünk. Ez sok adatpazarlást eredményez, és teljesítménycsökkenéshez vezethet. Ha helyette a Java StringBuilder osztályát használja, akkor a karakterláncokat új létrehozása nélkül módosíthatja. Ez csökkenti a hulladékot és javítja a teljesítményt.
Melyek a Java StringBuilder konstruktorai?
A Java StringBuilder négy konstruktorral rendelkezik, amelyek segítenek a karakterláncot a osztály számára megfelelő formátumba konvertálni. Ezeket konfigurációs célokra is használják. Íme a négy konstruktor és azok rendeltetése:
StringBuilder(): Létrehoz egy üres StringBuilder objektumot, amelynek maximális kapacitása 16 karakter.StringBuilder(int capacity): Karakterek nélküli StringBuilder létrehozása, amelynek maximális kapacitása a capacity argumentummal van meghatározvaStringBuilder(CharSequence seq): Olyan string builder-t generál, amelynek karakterei megegyeznek a tárolt karakter sorozat karaktereivelStringBuilder(String str): Létrehoz egy StringBuilder-t a beírt karakterlánccal
Nézzünk meg egy példát, hogy lássuk, hogyan működnek ezek a konstruktorok a gyakorlatban:
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());
}
}javaAmikor a Java System.out.println parancsot használjuk a kimenet lekéréséhez, a következő eredményt kapjuk:
First constructor = ABC
Second constructor = 5
Third constructor = ABCDEFGHIJK
Fourth constructor = ABCDEFGHIJKjavaMilyen módszerek használhatók a StringBuilderrel Java-ban?
A Java StringBuilder osztályával számos módszer használható. Az alábbiakban bemutatjuk a legfontosabbakat, kódpéldákkal illusztrálva.
append()
A append() metódust arra használjuk, hogy egy karakterláncot hozzáadjuk egy másikhoz. Különböző paraméterekkel rendelkezik. Így működik a gyakorlatban:
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder("ABCDE");
str.append("FGHIJK");
System.out.println(str);
}
}javaA kimenet a következő:
ABCDEFGHIJKjavainsert()
A insert() módszert a Java StringBuilder-rel kombinálva használják egy karakterlánc beillesztésére egy adott pontra. Íme egy példa a működésére:
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder("ABCDE");
str.insert(1,"FGHIJK");
System.out.println(str);
}
}javaItt van az eredmény:
AFGHIJKBCDEFGHIJKjavaAz egész szám (ebben az esetben 1) arra szolgál, hogy meghatározza a karakterlánc beillesztésének helyét.
replace()
A replace() módszer egy karakterláncot vagy karakterlánc egy részét helyettesíti. beginIndex és endIndex segítségével definiálható. Így működik a gyakorlatban:
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);
}
}javaA kimenet a következőképpen néz ki:
AFGHIJKEjavareverse()
A reverse() módszerrel a tárolt karakterlánc visszafelé sorrendbe állítható. Így működik:
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder("ABCDE");
str.reverse();
System.out.println(str);
}
}javaItt van az eredmény:
EDCBAjavadelete()
A delete() módszerrel a Java StringBuilder segítségével törölhet egy karakterlánc egészét vagy egy részét. Ha a karakterlánc egy részét szeretné törölni, akkor beginIndex és endIndex módszerekkel teheti meg.
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder("ABCDE");
str.delete(1,4);
System.out.println(str);
}
}javaItt van az eredmény:
AEjavacapacity()
A capacity() módszer megadja a StringBuilder aktuális maximális karakter számát. Általában 16. Ha növelni szeretné, akkor általában a „jelenlegi karakter szám * 2 + 2” képletet használja. Tehát, ha jelenleg 16, akkor megszorozza 2-vel (32), majd hozzáad 2-t. Ezt láthatja a példánkban:
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());
}
}javaA kimenet a következőképpen néz ki:
16
16
34javaensureCapacity()
A ensureCapacity() módszer biztosítja, hogy a rendelkezésre álló karakterek száma legalább a megadott érték legyen. Ha ez nem így van, akkor a kapacitás a fenti képlet, „aktuális karakterek száma * 2 + 2” segítségével növelhető. Ezt a következő példában láthatjuk:
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());
}
}javaItt van az eredmény:
16
16
34
34
70javaElőször a standard értéket (16) látjuk, majd ezt az értéket megszorozzuk 2-vel és hozzáadjuk 2-höz (34), végül az új értéket megszorozzuk 2-vel és hozzáadjuk 2-höz.