Java String­Buil­der klasė gali būti naudojama vietoj tra­di­ci­nių strypų. Skir­tin­gai nuo tra­di­ci­nių strypų, String­Buil­der leidžia keisti strypą ne­su­ku­riant naujo objekto. Keitimai gali būti atliekami naudojant įvairius metodus.

Kas yra Java String­Buil­der?

Java kalbos stygos klasė yra nekintama ir neturi jokių paklasių. Viena iš al­ter­na­ty­vų šiai galutinei klasei yra Java kalbos String­Buil­der. Ji sukuria simbolių seką, kurią galima keisti po jos sukūrimo. Šiuo atžvilgiu Java String­Buil­der yra panašus į String­Buf­fer. Abi klasės turi panašų tikslą, tačiau, skir­tin­gai nuo buferio pa­rink­ties, String­Buil­der nėra sin­ch­ro­ni­zuo­tas. Dėl to String­Buil­der yra geras pa­si­rin­ki­mas dirbant su vienu sriegiu, nes jis yra daug grei­tes­nis nei String­Buf­fer. Šiame pa­mo­ky­muo­se su­pa­žin­din­si­me jus su Java String­Buil­der ir pa­ro­dy­si­me keletą jo naudojimo pavyzdžių.

Kokia yra Java String­Buil­der sintaksė?

Java String­Buil­der sintaksė visada atitinka tą patį modelį, kuris atrodo taip:

public final class StringBuilder
	extends Object
		implements Serializable, CharSequence
java

Norint suprasti, kaip veikia klasė ir kokiam tikslui ji skirta, verta pir­miau­sia pažvelgti į tradicinę String klasę. Dekla­ra­vus objektą String, jo jau ne­be­ga­li­ma keisti. Jei norite atlikti pa­kei­ti­mus, turėsite sukurti ir išsaugoti visiškai naują objektą. Tai sukelia didelį duomenų švaistymą ir gali sumažinti našumą. Jei vietoj to naudojate String­Buil­der Java kalboje, galite keisti eilutes ne­su­kur­da­mi naujos. Tai sumažina švaistymą ir pagerina našumą.

Kokie yra Java String­Buil­der konst­ruk­to­riai?

Java String­Buil­der turi 4 konst­ruk­to­rius, kurie padeda kon­ver­tuo­ti eilutę į tinkamą klasės formatą. Jie taip pat naudojami kon­fi­gū­ra­ci­jai. Čia yra keturi konst­ruk­to­riai ir jų paskirtis:

  • StringBuilder(): Sukuria tuščią String­Buil­der su mak­si­ma­liu 16 simbolių talpa
  • StringBuilder(int capacity): Sukuria String­Buil­der be simbolių, kurio mak­si­ma­lus talpos dydis api­brė­žia­mas naudojant talpos argumentą
  • StringBuilder(CharSequence seq): Sukuria stygos kūrėją su tais pačiais sim­bo­liais, kaip ir saugoma simbolių seka
  • StringBuilder(String str): Sukuria String­Buil­der su jūsų įvestu styginiu

Pa­žvel­ki­me į pavyzdį, kad pa­ma­ty­tu­me, kaip šie konst­ruk­to­riai veikia prak­ti­ko­je:

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

Kai naudojame Java komandą System.out.println, kad gautume išvestį, gauname štai ką:

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

Kokie metodai naudojami su String­Buil­der Java kalboje?

Yra keletas metodų, kuriuos galima naudoti su Java String­Buil­der klase. Toliau pa­tei­kia­me keletą svar­biau­sių iš jų su kodo pa­vyz­džiais.

append()

append() metodas nau­do­ja­mas vienai eilutei pridėti prie kitos. Jis turi įvairius pa­ra­met­rus. Štai kaip jis veikia prak­ti­ko­je:

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

Re­zul­ta­tas yra toks:

ABCDEFGHIJK
java

insert()

insert() metodas nau­do­ja­mas kartu su Java String­Buil­der, kad įterptų eilutę į tam tikrą vietą. Štai pavyzdys, kaip tai veikia:

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

Štai re­zul­ta­tas:

AFGHIJKBCDEFGHIJK
java

Sveikasis skaičius (šiuo atveju 1) nau­do­ja­mas norint apibrėžti vietą, kurioje bus įterpta eilutė.

replace()

replace() metodas pakeičia eilutę arba jos dalį. Jis api­brė­žia­mas naudojant beginIndex ir endIndex. Taip tai veikia prak­ti­ko­je:

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

Re­zul­ta­tas atrodo taip:

AFGHIJKE
java

reverse()

reverse() metodas nau­do­ja­mas norint išsaugotą eilutę išdėstyti at­virkš­ti­ne tvarka. Štai kaip tai veikia:

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

Štai re­zul­ta­tas:

EDCBA
java

delete()

Naudodami Java String­Buil­der, galite naudoti delete() metodą, kad iš­trin­tu­mė­te visą arba dalį eilutės. Jei norite ištrinti dalį eilutės, galite tai padaryti naudodami beginIndex ir 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

Štai re­zul­ta­tas:

AE
java

capacity()

capacity() metodas pateikia dabartinį maksimalų simbolių skaičių String­Buil­der. Paprastai jis yra 16. Jei jis pa­di­di­na­mas, tai paprastai daroma naudojant formulę „da­bar­ti­nis simbolių skaičius * 2 + 2“. Taigi, jei šiuo metu jis yra 16, jis bus pa­dau­gin­tas iš 2 (32) ir tada prie jo bus pridėta 2. Tai matote mūsų pavyzdyje:

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

Re­zul­ta­tas atrodo taip:

16
16
34
java

ensureCapacity()

ensureCapacity() metodas užtikrina, kad galimų simbolių skaičius būtų ne mažesnis už nustatytą vertę. Jei taip nėra, talpa bus padidinta pagal aukščiau pateiktą formulę „da­bar­ti­nis simbolių skaičius * 2 + 2“. Tai matyti iš šio pavyzdžio:

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

Štai re­zul­ta­tas:

16
16
34
34
70
java

Pir­miau­sia matome stan­dar­ti­nę vertę (16), tada tą vertę pa­dau­gin­tą iš 2 ir pridėtą prie 2 (34), ir ga­liau­siai tą naują vertę pa­dau­gin­tą iš 2 ir pridėtą prie 2.

Go to Main Menu