Razred Strin­gBu­il­der v Javi se lahko uporablja namesto tra­di­ci­o­nal­nih nizov. Za razliko od tra­di­ci­o­nal­nih nizov, Strin­gBu­il­der omogoča spre­mi­nja­nje niza brez ustvar­ja­nja novega objekta. Spremembe se lahko izvedejo z raz­lič­ni­mi metodami.

Kaj je Java Strin­gBu­il­der?

Razred String v Javi je ne­spre­men­ljiv in nima po­d­ra­zre­dov. Ena od al­ter­na­tiv temu končnemu razredu je Java Strin­gBu­il­der. Ustvari zaporedje znakov, ki se lahko spremeni po ustvar­ja­nju. V tem smislu je Java Strin­gBu­il­der podoben Strin­gBu­ffer. Oba razreda imata podoben namen, vendar za razliko od možnosti buffer Strin­gBu­il­der ni sin­hro­ni­zi­ran. Zaradi tega je Strin­gBu­il­der dobra izbira pri delu z enim nizom, saj je veliko hitrejši od Strin­gBu­ffer. V tem vodiču vam bomo pred­sta­vi­li Strin­gBu­il­der v Javi in vam pokazali nekaj njegovih številnih uporab.

Kakšna je sintaksa Java Strin­gBu­il­der?

Sintaksa Java Strin­gBu­il­der vedno sledi istemu vzorcu, ki izgleda takole:

public final class StringBuilder
	extends Object
		implements Serializable, CharSequence
java

Da bi razumeli osnovne principe delovanja razreda in njegov namen, je koristno najprej pogledati tra­di­ci­o­nal­ni razred String. Ko enkrat de­kla­ri­ra­te objekt v String, tega objekta ne morete več spre­mi­nja­ti. Če želite narediti spremembe, morate ustvariti in shraniti povsem nov objekt. To povzroča veliko izgubo podatkov in lahko vodi do zmanjšane zmo­glji­vo­sti. Če namesto tega uporabite Strin­gBu­il­der v Javi, lahko spre­mi­nja­te nize, ne da bi ustvarili nove. To zmanjša izgubo in izboljša zmo­glji­vost.

Kateri so kon­struk­tor­ji za Java Strin­gBu­il­der?

Java Strin­gBu­il­der ima 4 kon­struk­tor­je, ki pomagajo pre­tvo­ri­ti niz v pravi format za razred. Upo­ra­blja­jo se tudi za kon­fi­gu­ra­ci­jo. Tukaj so štirje kon­struk­tor­ji in njihovi nameni:

  • StringBuilder(): Ustvari prazen Strin­gBu­il­der z največjo zmo­glji­vo­stjo 16 znakov
  • StringBuilder(int capacity): Ustvari Strin­gBu­il­der brez znakov, katerega ma­ksi­mal­na ka­pa­ci­te­ta je de­fi­ni­ra­na z ar­gu­men­tom capacity
  • StringBuilder(CharSequence seq): Ustvari nizovnik z istimi znaki kot shranjena zaporedja znakov
  • StringBuilder(String str): Ustvari Strin­gBu­il­der z nizom, ki ga vnesete

Poglejmo primer, da vidimo, kako ti kon­struk­tor­ji delujejo v praksi:

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

Ko uporabimo ukaz Java System.out.println za pri­do­bi­tev izhoda, dobimo naslednje:

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

Kateri metodi se upo­ra­blja­ta s Strin­gBu­il­der v Javi?

Obstaja več metod, ki jih lahko uporabite s klaso Strin­gBu­il­der v Javi. Spodaj pred­sta­vlja­mo nekatere naj­po­memb­nej­še med njimi, skupaj s primeri kode.

append()

Metoda append() se uporablja za dodajanje enega niza drugemu. Ima različne parametre. Tako deluje v praksi:

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

Izhod je naslednji:

ABCDEFGHIJK
java

insert()

Metoda insert() se uporablja v kom­bi­na­ci­ji z Java Strin­gBu­il­der­jem za vsta­vlja­nje niza na določeno mesto. Tukaj je primer, kako deluje:

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

Tukaj je izhod:

AFGHIJKBCDEFGHIJK
java

Celo število (v tem primeru 1) se uporablja za določitev položaja, na katerega bo niz vstavljen.

replace()

Metoda replace() nadomesti niz ali del niza. Opre­de­lje­na je z uporabo beginIndex in endIndex. Tako deluje v praksi:

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

Izhod je naslednji:

AFGHIJKE
java

reverse()

Metoda reverse() se uporablja za obrnitev shra­nje­ne­ga niza v obratnem vrstnem redu. Tako deluje:

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

Tukaj je izhod:

EDCBA
java

delete()

Metodo delete() lahko uporabite z Java Strin­gBu­il­der­jem, da izbrišete celoten niz ali njegov del. Če želite izbrisati del niza, lahko to storite z beginIndex in 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

Tukaj je izhod:

AE
java

capacity()

Metoda capacity() vam poda trenutno največje število znakov za Strin­gBu­il­der. Običajno je to 16. Če se poveča, se to običajno naredi s formulo »trenutno število znakov * 2 + 2«. Torej, če je trenutno 16, se pomnoži z 2 (32) in nato doda 2. To lahko vidite v našem primeru:

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

Izhod je naslednji:

16
16
34
java

ensureCapacity()

Metoda ensureCapacity() za­go­ta­vlja, da je število raz­po­lo­žlji­vih znakov vsaj enako opre­de­lje­ni vrednosti. Če to ni tako, se zmo­glji­vost poveča z uporabo zgornje formule, »trenutno število znakov * 2 + 2«. To lahko vidite v na­sle­dnjem primeru:

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

Tukaj je izhod:

16
16
34
34
70
java

Najprej vidimo stan­dar­dno vrednost (16), nato to vrednost pomnoženo z 2 in seštejeno z 2 (34) in nazadnje novo vrednost pomnoženo z 2 in seštejeno z 2.

Go to Main Menu