StringBuffer v Javě je thread-safe, proměnlivé sekvenci znaků, tedy s použitím StringBuffer třída si může vytvořit editovatelný Řetězec objektů.
v post String v Javě jsme již viděli, že string objekty jsou neměnné, tj. řetězce jsou konstantní; jejich hodnoty nelze změnit po jejich vytvoření. Kvůli této vlastnosti neměnnosti při použití metody modifikace řetězce, jako je zřetězení, se ve skutečnosti stane, že je vytvořen a vrácen nový řetězec, který obsahuje výsledek operace. To může vést k vytvoření mnoha mezilehlých řetězcových objektů, pokud je řetězec několikrát upraven, což znamená, že pro tyto mezilehlé objekty je použito více paměti.
pomocí objektu StringBuffer se můžete vyhnout tomuto problému vytváření několika objektů, protože je proměnlivý. Není překvapením, že hlavní operace na Stringbufferu jsou metody připojení a vložení.
- Důležité body o Java StringBuffer
- Java StringBuffer Konstruktéři
- Java StringBuffer metoda příklady
Důležité body o Java StringBuffer
Některé z důležitých bodů o StringBuffer třída.
- StringBuffer v Javě poskytuje velkou část funkčnosti třídy String s jednou výraznou odchylkou, že StringBuffer je proměnlivý.
- StringBuffer je také bezpečný pro vlákna, takže objekt StringBuffer může být bezpečně používán více vlákny. Metody třídy StringBuffer jsou v případě potřeby synchronizovány.
- každý StringBuffer je vytvořen s kapacitou. Pokud délka znakové sekvence obsažené v vyrovnávací paměti řetězce nepřesahuje kapacitu, není nutné přidělovat nové interní vyrovnávací pole. Pokud interní vyrovnávací paměť přeteče, automaticky se zvětší.
- Java 5 kupředu StringBuilder třída je také k dispozici, který je ekvivalentní třídě StringBuffer, ale určen pro použití jediným vláknem. StringBuilder je rychlejší, protože neprovádí žádnou synchronizaci.
Java StringBuffer Constructors
ve třídě StringBuffer jsou čtyři konstruktory.
- StringBuffer () – vytvoří vyrovnávací paměť řetězce bez znaků a počáteční kapacitou 16 znaků.
StringBuffer sb = new StringBuffer();
- StringBuffer(int capacity) – vytvoří vyrovnávací paměť řetězce bez znaků a zadané počáteční kapacity.
StringBuffer sb = new StringBuffer(30);
- StringBuffer(CharSequence seq)– Vytvoří řetězec vyrovnávací paměti, která obsahuje stejné znaky jako zadaný CharSequence.
zde CharSequence je rozhraní, které je implementováno pomocí CharBuffer, Segment, String, StringBuffer, StringBuilder. - StringBuffer (String str) – vytvoří vyrovnávací paměť řetězce inicializovanou na obsah zadaného řetězce.
StringBuffer sb = new StringBuffer("Hello");
Java StringBuffer metoda příklady
připojit metoda
připojit metoda je přetížený tak, aby přijímat data z jakéhokoliv typu. Tato metoda připojí reprezentaci řetězce daného datového typu k existující vyrovnávací paměti. Metoda připojení vždy přidá tyto znaky na konec vyrovnávací paměti.
public class StringLiteral { public static void main(String args) { StringBuffer sb = new StringBuffer("Hello"); sb.append(" "); sb.append("World").append(" ").append(123); System.out.println("Appended String- " + sb.toString()); }}
Výstupní
Appended String- Hello World 123
Jak můžete vidět z příkladu připojit se používá s String jako argument, a také int jako argument, jako je přetížení pro tyto datové typy. Můžete také řetěz připojit metodu, jak je provedeno v tomto řádku kódu –
sb.append("World").append(" ").append(123)
pomocí metody připojit můžeme také zkontrolovat tvrzení, že řetězec je neměnný, kde jako StringBuffer je proměnlivý. V příkladu je vytvořen objekt StringBuffer a poté jsou k němu připojeny hodnoty a vrácený odkaz je uložen v jiném Stringbufferu.
stejným způsobem je řetězec vytvořen a hodnoty k němu připojeny, vrácený řetězec je také odkazován jiným řetězcem.
při kontrole rovnosti dvou odkazů na StringBuffer můžete vidět, že oba jsou stejné, zatímco pro řetězec jsou oba odlišné.
public class StringLiteral {public static void main(String args) {// With StringBufferSystem.out.println("StringBuffer...");StringBuffer sb = new StringBuffer("Hello");sb.append(" ");StringBuffer newsb = sb.append("World").append(" ").append(123);if (sb == newsb) {System.out.println("Reference is same");}else {System.out.println("Reference is different");}// With StringSystem.out.println("String...");String str = "Hello";String newstr = str.concat(" ").concat("World").concat(" ").concat("123");if (str == newstr) {System.out.println("Reference is same");}else {System.out.println("Reference is different");}}}
Výstupní
StringBuffer...Reference is sameString...Reference is different
vložit metodu,
vložit metoda je přetížený tak, aby přijímat data z jakéhokoliv typu. Tato metoda se používá k vložení reprezentace řetězce daného datového typu do existující vyrovnávací paměti. Metoda vložit přidá znaky v určeném bodě.
vložit metoda přebírá dva argumenty, první celé číslo označující pozici, kde postavy mají být vložena do bufferu a druhý argument je text, který má být vložen.
public class StringLiteral { public static void main(String args) { StringBuffer sb = new StringBuffer("Knp"); sb.insert(3, "Code"); System.out.println("String after insert- " + sb); }}
Výstupní
String after insert- KnpCode
délka a kapacita metod
kapacita()– Vrací aktuální kapacita StringBuffer.
délka () – vrací počet znaků v tomto pořadí.
public class StringLiteral { public static void main(String args) { StringBuffer sb = new StringBuffer(30); sb.append("Hello"); System.out.println("Capacity of StringBuffer- " + sb.capacity()); System.out.println("Length of StringBuffer- " + sb.length()); }}
Výstupní
Capacity of StringBuffer- 30Length of StringBuffer- 5
Jak můžete vidět StringBuffer je vytvořen s kapacitou 30 takže kapacita je zobrazena jako 30, kde jako počet znaků ve vyrovnávací paměti je 5, takže délka je zobrazen jako 5.
delete and deleteCharAt methods
- delete (int start, int end) – odstraní znaky v podřetězci této sekvence. začátek, který označuje počáteční index, je včetně, kde jako konec, který označuje koncový index, je exkluzivní.
- deleteCharAt (int index) – odstraní znak na zadané pozici v tomto pořadí.
public class StringLiteral { public static void main(String args) { StringBuffer sb = new StringBuffer("Hello"); sb.delete(1, 4); System.out.println("After deletion- " + sb); System.out.println("Length of StringBuffer- " + sb.length()); }}
Výstupní
After deletion- HoLength of StringBuffer- 2
public class StringLiteral {public static void main(String args) {StringBuffer sb = new StringBuffer("Hello");sb.deleteCharAt(4);System.out.println("After deletion- " + sb);System.out.println("Length of StringBuffer- " + sb.length());}}
Výstupní
After deletion- HellLength of StringBuffer- 4
Java StringBuffer reverse způsob,
reverse()– Obrátí stávající StringBuffer.
public class StringLiteral {public static void main(String args) {StringBuffer sb = new StringBuffer("Hello");System.out.println("Reversed- " + sb.reverse());}}
Výstupní
Reversed- olleH
Java StringBuffer nahradit metodu,
nahradit(int start, int end, String str)– Nahrazuje znaky v názvu podřetězec z této sekvence (začátek to konec-1) s znaků v zadaném Řetězci.
public class StringLiteral {public static void main(String args) {StringBuffer sb = new StringBuffer("Hello");sb.replace(3, 5, "ena");System.out.println("String- " + sb);}}
Výstupní
String- Helena
- Java StringBuilder S Metodou Příklady
- Proč String je Neměnný v Java
- Je Java String Thread Safe
- Java String. intern() Metoda
- Java String. split() Metoda
- Kompaktní Řetězce v Javě 9
- Najděte Délku Řetězce Bez Použití length() Metoda v jazyce Java
- Převést Char na String A String na Char v jazyce Java
to je vše na téma Java StringBuffer S Metodou Příklady. Pokud něco chybí nebo máte o tématu něco sdílet, napište komentář.
může se vám také líbit