Jelenlegi hely

8.2. String, StringBuffer és StringBuilder osztály

A Java platform a kezdetektől fogva biztosított két osztályt, melyekkel tárolhatunk, illetve manipulálhatunk sztringeket, ezek a String és a StringBuffer. A String osztályban olyan sztringeket tárolunk, melyek értéke nem fog változni. A StringBuffer osztályt akkor használjuk, ha a szövegen szeretnénk változtatni, ezt elsősorban dinamikus karakterlánc készítésekor (pl. fájlból olvasás) használjuk. A StringBuffer-ek használata biztonságos több szálas környezetben. A StringBuilder osztályt a JDK 5.0-tól vezették be, ami gyorsabb, mint a StringBuffer, de csak egy szálon használható biztonságosan.

A következő irányelvek alapján döntsünk, hogy melyik osztályt használjuk:

  • Ha a szöveg nem fog változni, használjuk a String-et.
  • Ha a szöveg változni fog, és csak egy szálon keresztül fogjuk elérni, használjuk a StringBuilder-t.
  • Ha a szöveg változni fog és több szálon keresztül fogjuk elérni StringBuffer-t használjuk.

A következő példaprogram neve StringsDemo, amely megfordítja egy sztring karaktereit. A program használja a String és StringBuilder osztályokat is. Ha a JDK 5.0-ás változatánál régebbit használ, a StringBuilder előfordulásait le kell cserélni StringBuffer-re, és a program működni fog.

public class StringsDemo {
    public static void main(String[] args) {
        String palindrome = "Dot saw I was Tod";
        int len = palindrome.length();
        StringBuilder dest = new StringBuilder(len);
        for (int i = (len - 1); i >= 0; i--) {
            dest.append(palindrome.charAt(i));
        }
        System.out.println(dest.toString());
    }
}

A program kimenete a következő lesz:

doT saw I was toD

Megjegyzés: Érdemes még a példán megfigyelni, hogy a StringBuilder (és StringBuffer) osztály példányosításakor az előre látható méretet meg lehet adni. Ez gyorsabb futást eredményez.