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, CharSequence
java

Ahhoz, 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ározva
  • StringBuilder(CharSequence seq): Olyan string builder-t generál, amelynek karakterei megegyeznek a tárolt karakter sorozat karaktereivel
  • StringBuilder(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());
	}
}
java

Amikor 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 = ABCDEFGHIJK
java

Milyen 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);
	}
}
java

A kimenet a következő:

ABCDEFGHIJK
java

insert()

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);
	}
}
java

Itt van az eredmény:

AFGHIJKBCDEFGHIJK
java

Az 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);
	}
}
java

A kimenet a következőképpen néz ki:

AFGHIJKE
java

reverse()

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);
	}
}
java

Itt van az eredmény:

EDCBA
java

delete()

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);
	}
}
java

Itt van az eredmény:

AE
java

capacity()

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());
	}
}
java

A kimenet a következőképpen néz ki:

16
16
34
java

ensureCapacity()

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());
	}
}
java

Itt van az eredmény:

16
16
34
34
70
java

Elő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.

Ugrás a főmenübe