Reprezentace textových řetězců v Javě
Třída StringBuffer
Protože návrháři Javy předpokládali, že programátoři nebudou často měnit již vytvořené
řetězce, jsou objekty typu
String neměnitelné. Tato neměnitelnost poskytuje vyšší
odolnost vůči chybám a efektivnější zacházení. Pokud chcete využívat měnitelné řetezce
musíte použít instance třídy
StringBuffer. Obecně je
doporučeno používat instance třídy
String jako "zmrazené" textové řetězce, při
potřebě změny je zkonvertovat na typ
StringBuffer a po provedení změny opět uchovávat
v objektech typu
String.
// vytvoření objektu StringBuffer (s kapacitou 16 znaků)
StringBuffer jmenobuf2 = new StringBuffer();
String jmeno = "Lumír Návrat";
// vytvoření objektu StringBuffer s použitím třídy String
StringBuffer jmenobuf1 = new StringBuffer(jmeno);
// vytvoření objektu StringBuffer s kapacitou zadanou číslem
StringBuffer jmenobuf2 = new StringBuffer(20);
Převod objektu StringBuffer na String a zpět
Převod StringBuffer na String se provede metodou toString. Převod ze String na StringBuffer
se provede vhodným použitím operátoru new (je to zcela intuitivní).
// ze String do StringBuffer
StringBuffer jmenobuf = new StringBuffer("Jakub Konštacký");
// ze StringBuffer do String
String jmeno = jmenobuf.toString();
Základy práce s třídou StringBuffer
append, insert - přidávání a vkládání textu
StringBuffer buf = new StringBuffer("jmeno :");
buf.append(" Šmíd");
buf.insert(8, " Zdeněk")
// vystup by mel byt "jmeno : Zdeněk Šmíd";
System.out.println(buf.toString());
replace - změna textu ve StringBufferu
StringBuffer buf = new StringBuffer("Miroslav Krupa");
String s1 = "Mirek";
// nahradi text zacinajici na pozici 1 až 8 novým textem
buf.replace(1,8,s1);
capacity - zjištení kapacity StringBufferu. Kapacita představuje maximalní počet
znaků, který je možno do StringBufferu uložit.
StringBuffer buf = new StringBuffer("delsi retezec");
// delka je nastavena na 10
buf.setLength(10);
// ale do kapacity je ulozena hodnota 14
int kapacita = buf.capacity();
(c) Miroslav Krupa, 2000