Ako používať StringBuilder v Jave
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, CharSequencejavaAby 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 znakovStringBuilder(int capacity): Vytvorí StringBuilder bez znakov, ktorého maximálna kapacita je definovaná pomocou argumentu capacityStringBuilder(CharSequence seq): Vytvorí reťazec s rovnakými znakmi ako uložená sekvencia znakovStringBuilder(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());
}
}javaKeď 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 = ABCDEFGHIJKjavaAké 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);
}
}javaVýstup je nasledovný:
ABCDEFGHIJKjavainsert()
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);
}
}javaTu je výstup:
AFGHIJKBCDEFGHIJKjavaCelé čí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);
}
}javaVýstup vyzerá nasledovne:
AFGHIJKEjavareverse()
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);
}
}javaTu je výstup:
EDCBAjavadelete()
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);
}
}javaTu je výstup:
AEjavacapacity()
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());
}
}javaVýstup vyzerá nasledovne:
16
16
34javaensureCapacity()
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());
}
}javaTu je výstup:
16
16
34
34
70javaNajskô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.