Java-kielisen StringBuilder-luokan käyttö
Java-kielen StringBuilder-luokkaa voidaan käyttää perinteisten merkkijonojen sijaan. Toisin kuin perinteiset merkkijonot, StringBuilder mahdollistaa merkkijonon muuttamisen ilman uuden objektin luomista. Muutokset voidaan tehdä eri menetelmillä.
Mikä on Java-kielessä StringBuilder?
Java-kielessä string-luokka on muuttumaton eikä sillä ole alaluokkia. Yksi vaihtoehto tälle lopulliselle luokalle on Java-kielen StringBuilder. Se luo merkkijonon, jota voidaan muuttaa sen luomisen jälkeen. Tällä tavalla Java-kielen StringBuilder on samanlainen kuin StringBuffer. Näillä kahdella luokalla on samanlainen tarkoitus, mutta toisin kuin puskurioptio, StringBuilder ei ole synkronoitu. Tämä tekee StringBuilderista hyvän valinnan, kun työskentelet yksittäisten säikeiden kanssa, koska se on paljon nopeampi kuin StringBuffer. Tässä opetusohjelmassa esittelemme sinulle Java-kielen StringBuilderin ja näytämme sinulle joitakin sen monista käyttötavoista.
Mikä on Java-kielen StringBuilder-luokan syntaksi?
Java-kielisen StringBuilder-luokan syntaksi noudattaa aina samaa mallia, joka näyttää tältä:
public final class StringBuilder
extends Object
implements Serializable, CharSequencejavaJotta ymmärtäisit luokan toiminnan perusteet ja sen tarkoituksen, on hyödyllistä tarkastella ensin perinteistä String-luokkaa. Kun olet määrittänyt objektin String-luokassa, et voi enää muuttaa sitä. Jos haluat tehdä muutoksia, sinun on luotava ja tallennettava kokonaan uusi objekti. Tämä aiheuttaa paljon datajätettä ja voi heikentää suorituskykyä. Jos käytät sen sijaan StringBuilderia Javassa, voit tehdä muutoksia merkkijonoihin luomatta uutta. Tämä vähentää hukkaa ja parantaa suorituskykyä.
Mitkä ovat Java-kielen StringBuilder-luokan konstruktorit?
Java:n StringBuilder-luokka sisältää neljä konstruktoria, jotka auttavat muuntamaan merkkijonon luokalle sopivaan muotoon. Niitä käytetään myös konfigurointiin. Tässä ovat neljä konstruktoria ja niiden käyttötarkoitukset:
StringBuilder(): Luo tyhjän StringBuilder-objektin, jonka enimmäiskapasiteetti on 16 merkkiäStringBuilder(int capacity): Luo merkkijonon, jossa ei ole merkkejä ja jonka enimmäiskapasiteetti määritetään capacity-argumentillaStringBuilder(CharSequence seq): Luo merkkijonon, jossa on samat merkit kuin tallennetussa merkkijonossaStringBuilder(String str): Luo StringBuilder-luokan, jossa on syöttämäsi merkkijono
Katsotaanpa esimerkkiä, jossa näemme, miten nämä konstruktorit toimivat käytännössä:
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());
}
}javaKun käytämme Java-komentoa System.out.println tuloksen saamiseksi, saamme seuraavan tuloksen:
First constructor = ABC
Second constructor = 5
Third constructor = ABCDEFGHIJK
Fourth constructor = ABCDEFGHIJKjavaMitä menetelmiä käytetään StringBuilderin kanssa Java-kielessä?
Java-luokan StringBuilder kanssa voidaan käyttää useita menetelmiä. Alla esittelemme joitakin tärkeimpiä menetelmiä koodiesimerkkien kera.
append()
append() etelmää käytetään yhden merkkijonon lisäämiseen toiseen. Siinä on useita parametreja. Näin se toimii käytännössä:
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder("ABCDE");
str.append("FGHIJK");
System.out.println(str);
}
}javaTulostus on seuraava:
ABCDEFGHIJKjavainsert()
insert() käytetään yhdessä Java-kielisen StringBuilder-luokan kanssa merkkijonon lisäämiseksi tiettyyn kohtaan. Tässä on esimerkki sen toiminnasta:
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder("ABCDE");
str.insert(1,"FGHIJK");
System.out.println(str);
}
}javaTässä on tulos:
AFGHIJKBCDEFGHIJKjavaKokonaislukua (tässä tapauksessa 1) käytetään määrittämään sijainti, johon merkkijono lisätään.
replace()
replace() korvaa merkkijonon tai osan merkkijonosta. Se määritellään käyttämällä beginIndex ja endIndex. Näin se toimii käytännössä:
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);
}
}javaTulostus näyttää seuraavalta:
AFGHIJKEjavareverse()
reverse() -menetelmää käytetään tallennetun merkkijonon kääntämiseen käänteiseen järjestykseen. Se toimii seuraavasti:
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder("ABCDE");
str.reverse();
System.out.println(str);
}
}javaTässä on tulos:
EDCBAjavadelete()
Voit käyttää delete() menetelmää Java-kielisen StringBuilder-luokan kanssa poistaaksesi merkkijonon kokonaan tai osittain. Jos haluat poistaa osan merkkijonosta, voit tehdä sen beginIndex ja endIndex avulla.
public class Main {
public static void main(String[] argv) throws Exception {
StringBuilder str = new StringBuilder("ABCDE");
str.delete(1,4);
System.out.println(str);
}
}javaTässä on tulos:
AEjavacapacity()
capacity() antaa sinulle StringBuilderin nykyisen enimmäismerkkimäärän. Se on yleensä 16. Jos sitä lisätään, se tehdään yleensä kaavalla “nykyinen merkkimäärä * 2 + 2”. Jos se on siis tällä hetkellä 16, se kerrotaan 2:lla (32) ja siihen lisätään 2. Voit nähdä sen esimerkissämme:
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());
}
}javaTulostus näyttää seuraavalta:
16
16
34javaensureCapacity()
ensureCapacity() varmistaa, että käytettävissä olevien merkkien määrä on vähintään määritelty arvo. Jos näin ei ole, kapasiteettia lisätään käyttämällä yllä olevaa kaavaa, ”nykyinen merkkimäärä * 2 + 2”. Tämä näkyy seuraavassa esimerkissä:
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());
}
}javaTässä on tulos:
16
16
34
34
70javaEnsin näemme vakioarvon (16), sitten kyseisen arvon kerrottuna 2:lla ja lisättynä 2:een (34) ja lopuksi uuden arvon kerrottuna 2:lla ja lisättynä 2:een.