Java String­Buil­der-klassi saab kasutada tra­dit­sioo­ni­liste stringide asemel. Erinevalt tra­dit­sioo­ni­lis­test strin­gi­dest võimaldab String­Buil­der teha stringis muudatusi ilma uut objekti loomata. Muudatusi saab teha erinevate meetodite abil.

Mis on Java String­Buil­der?

Java string-klass on muutumatu ja sellel pole alam­klasse. Üks al­ter­na­tiiv sellele lõplikule klassile on Java String­Buil­der. See loob märkide jada, mida saab pärast loomist muuta. Selles mõttes on Java String­Buil­der sarnane String­Bufferiga. Kahel klassil on sarnane otstarve, kuid erinevalt puhvri valikust ei ole String­Buil­der sünk­ro­ni­see­ri­tud. See teeb String­Buil­de­rist hea valiku ühe niidiga töö­ta­misel, kuna see on palju kiirem kui String­Buffer. Selles õpetuses tut­vus­tame teile Java String­Buil­de­rit ja näitame mõningaid selle paljudest ka­su­tus­või­ma­lus­test.

Mis on Java String­Buil­deri süntaks?

Java String­Buil­deri süntaks järgib alati sama mustrit, mis näeb välja järgmine:

public final class StringBuilder
	extends Object
		implements Serializable, CharSequence
java

Selleks, et mõista klassi toimimise põ­hi­mõt­teid ja eesmärki, on kasulik esmalt tutvuda tra­dit­sioo­ni­lise String-klassiga. Kui olete String-klassis objekti dek­la­ree­ri­nud, ei saa seda enam muuta. Kui soovite teha muudatusi, peate looma ja sal­ves­tama täiesti uue objekti. See tekitab palju and­me­jäät­meid ja võib vähendada jõudlust. Kui kasutate Java-s selle asemel String­Buil­de­rit, saate stringe muuta ilma uut loomata. See vähendab rais­ka­mist ja parandab jõudlust.

Millised on Java String­Buil­deri konst­ruk­to­rid?

Java String­Buil­de­ril on 4 konst­ruk­to­rit, mis aitavad tei­sen­dada stringi klassi jaoks sobivasse formaati. Neid ka­su­ta­takse ka kon­fi­gu­ree­ri­miseks. Siin on neli konst­ruk­to­rit ja nende otstarbed:

  • StringBuilder(): Loob tühja String­Buil­deri, mille mak­si­maalne mahutavus on 16 tähemärki
  • StringBuilder(int capacity): Loob String­Buil­deri ilma tä­he­mär­ki­deta, mille mak­si­maalne mahutavus on määratud ar­gu­men­diga capacity
  • StringBuilder(CharSequence seq): Loob string builder’i, millel on samad tä­he­mär­gid kui sal­ves­ta­tud tä­he­mär­kide jadas
  • StringBuilder(String str): Loob String­Buil­der’i si­ses­ta­tud stringiga

Vaatame näidet, et näha, kuidas need konst­ruk­to­rid praktikas toimivad:

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

Kui kasutame Java käsku System.out.println väljundi saamiseks, saame järgmise tulemuse:

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

Milliseid meetodeid ka­su­ta­takse Java keeles String­Buil­deriga?

Java String­Buil­der-klassiga saab kasutada mitmeid meetodeid. Allpool tut­vus­tame mõningaid olu­li­se­maid neist koos koo­di­näi­de­tega.

append()

Meetodit append() ka­su­ta­takse ühe stringi teisele li­sa­miseks. Sellel on mit­me­su­gu­seid pa­ra­meetreid. Siin on näide, kuidas see praktikas toimib:

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äljund on järgmine:

ABCDEFGHIJK
java

insert()

insert() meetodit ka­su­ta­takse koos Java String­Buil­deriga, et lisada string kindlasse kohta. Siin on näide selle toi­mi­mi­sest:

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

Siin on väljund:

AFGHIJKBCDEFGHIJK
java

Täisarvu (antud juhul 1) ka­su­ta­takse selleks, et määrata koht, kuhu string lisatakse.

replace()

Meetod replace() asendab stringi või stringi osa. See on de­fi­nee­ri­tud kasutades beginIndex ja endIndex. Praktikas toimib see järg­mi­selt:

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äljund näeb välja järgmine:

AFGHIJKE
java

reverse()

Meetodit reverse() ka­su­ta­takse sal­ves­ta­tud stringi tagurpidi jär­jes­ta­miseks. See toimib järg­mi­selt:

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

Siin on väljund:

EDCBA
java

delete()

Java String­Buil­deriga saab delete() meetodit kasutada stringi täie­likuks või osaliseks kus­tu­ta­miseks. Kui soovite stringi osaliselt kustutada, saate seda teha beginIndex ja endIndex abil.

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

Siin on väljund:

AE
java

capacity()

Meetod capacity() annab teile String­Buil­deri praeguse mak­si­maalse tä­he­mär­kide arvu. Ta­va­li­selt on see 16. Kui seda suu­ren­da­takse, tehakse seda ta­va­li­selt valemi „praegune tä­he­mär­kide arv * 2 + 2” abil. Seega, kui see on praegu 16, kor­ru­ta­takse see 2-ga (32) ja lisatakse sellele 2. Seda näete meie näites:

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äljund näeb välja järgmine:

16
16
34
java

ensureCapacity()

ensureCapacity() meetod tagab, et kät­te­saa­da­vate tä­he­mär­kide arv on vähemalt määratud väär­tu­sega võrdne. Kui see nii ei ole, suu­ren­da­takse ma­hu­ta­vust ülal­too­dud valemi abil: „praegune tä­he­mär­kide arv * 2 + 2”. Seda näete järgnevas näites:

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

Siin on väljund:

16
16
34
34
70
java

Esmalt näeme stan­dard­väär­tust (16), seejärel seda väärtust kor­ru­ta­tuna 2-ga ja liidetuna 2-ga (34) ning lõpuks seda uut väärtust kor­ru­ta­tuna 2-ga ja liidetuna 2-ga.

Go to Main Menu