Reprezentace textových řetězců v Javě

[ hlavní strana ] [ datový typ char a třída Charakter ] [ třída String ] [ třída StringBuffer ]

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();

logo

[ hlavní strana ] [ datový typ char a třída Charakter ] [ třída String ] [ třída StringBuffer ]

(c) Miroslav Krupa, 2000