Trieda StringBuilder v jazyku Java sa môže používať namiesto tradičných reťazcov. Na rozdiel od tradičných reťazcov, StringBuilder umožňuje vykonávať zmeny v reťazci bez vytvárania nového objektu. Zmeny je možné vykonávať pomocou rôznych metód.

Čo je Java StringBuilder?

Trieda reťazcov v Jave je nemenná a nemá žiadne podtriedy. Jednou z alternatív k tejto konečnej triede je StringBuilder v Jave. Vytvára sekvenciu znakov, ktorú je možné po vytvorení meniť. V tomto smere je StringBuilder v Jave podobný StringBuffer. Obidve triedy majú podobný účel, ale na rozdiel od možnosti buffer nie je StringBuilder synchronizovaný. To robí StringBuilder dobrou voľbou pri práci s jedným vláknom, pretože je oveľa rýchlejší ako StringBuffer. V tomto tutoriáli vám predstavíme StringBuilder v Jave a ukážeme vám niektoré z jeho mnohých použití.

Aká je syntax Java StringBuilder?

Syntaxe StringBuilder v jazyku Java vždy sleduje rovnaký vzor, ktorý vyzerá takto:

public final class StringBuilder
	extends Object
		implements Serializable, CharSequence
java

Aby ste pochopili základy fungovania triedy a jej účel, je užitočné najskôr sa pozrieť na tradičnú triedu String. Po deklarovaní objektu v triede String už tento objekt nemôžete meniť. Ak chcete vykonať zmeny, musíte vytvoriť a uložiť úplne nový objekt. To vedie k veľkému plytvaniu dátami a môže spôsobiť zníženie výkonu. Ak namiesto toho použijete StringBuilder v Jave, môžete robiť zmeny v reťazcoch bez vytvárania nových. Tým sa znižuje plytvanie a zlepšuje výkon.

Aké sú konštruktory pre StringBuilder v Jave?

Java StringBuilder má 4 konštruktory, ktoré pomáhajú previesť reťazec do správneho formátu pre triedu. Používajú sa aj na konfiguráciu. Tu sú štyri konštruktory a ich účely:

  • StringBuilder(): Vytvorí prázdny StringBuilder s maximálnou kapacitou 16 znakov
  • StringBuilder(int capacity): Vytvorí StringBuilder bez znakov, ktorého maximálna kapacita je definovaná pomocou argumentu capacity
  • StringBuilder(CharSequence seq): Vytvorí reťazec s rovnakými znakmi ako uložená sekvencia znakov
  • StringBuilder(String str): Vytvorí StringBuilder s reťazcom, ktorý zadáte

Pozrime sa na príklad, aby sme videli, ako tieto konštruktory fungujú v praxi:

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

Keď použijeme príkaz Java System.out.println na získanie výstupu, dostaneme nasledujúci výsledok:

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

Aké metódy sa používajú s StringBuilder v Jave?

Existuje celý rad metód, ktoré možno použiť s triedou StringBuilder v jazyku Java. Nižšie uvádzame niektoré z najdôležitejších metód spolu s príkladmi kódu.

append()

Metóda append() sa používa na pridanie jedného reťazca k druhému. Má rôzne parametre. Takto funguje v praxi:

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

Výstup je nasledovný:

ABCDEFGHIJK
java

insert()

Metóda insert() sa používa v kombinácii s Java StringBuilder na vloženie reťazca na konkrétne miesto. Tu je príklad, ako to funguje:

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

Tu je výstup:

AFGHIJKBCDEFGHIJK
java

Celé číslo (v tomto prípade 1) sa používa na definovanie pozície, na ktorú sa reťazec vloží.

replace()

Metóda replace() nahrádza reťazec alebo časť reťazca. Je definovaná pomocou beginIndex a endIndex. Takto to funguje v praxi:

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

Výstup vyzerá nasledovne:

AFGHIJKE
java

reverse()

Metóda reverse() sa používa na zoradenie uloženého reťazca v opačnom poradí. Funguje to takto:

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

Tu je výstup:

EDCBA
java

delete()

Metódu delete() môžete použiť s Java StringBuilder na vymazanie celého reťazca alebo jeho časti. Ak chcete vymazať časť reťazca, môžete to urobiť pomocou beginIndex a 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

Tu je výstup:

AE
java

capacity()

Metóda capacity() vám poskytuje aktuálny maximálny počet znakov pre StringBuilder. Zvyčajne je to 16. Ak sa zvýši, zvyčajne sa to robí pomocou vzorca „aktuálny počet znakov * 2 + 2“. Ak je teda aktuálne 16, vynásobí sa 2 (32) a potom sa k nemu pripočíta 2. Môžete to vidieť v našom príklade:

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

Výstup vyzerá nasledovne:

16
16
34
java

ensureCapacity()

Metóda ensureCapacity() zabezpečuje, že počet dostupných znakov je aspoň rovnaký ako definovaná hodnota. Ak tomu tak nie je, kapacita sa zvýši pomocou vyššie uvedeného vzorca „aktuálny počet znakov * 2 + 2“. Môžete to vidieť v nasledujúcom príklade:

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

Tu je výstup:

16
16
34
34
70
java

Najskôr vidíme štandardnú hodnotu (16), potom túto hodnotu vynásobenú 2 a pripočítanú k 2 (34) a nakoniec túto novú hodnotu vynásobenú 2 a pripočítanú k 2.

Prejsť na hlavné menu