StringBuffer vs StringBuilder
A Java egy nagyon népszerű objektumorientált nyelv. A Java nyelvben a String osztály olyan karaktersorozatot tartalmaz, amely nem módosítható (az inicializálást követően). Alternatív megoldásként a Java programozási nyelv kétféle változó karaktersorozatot biztosít. Ez azt jelenti, hogy amikor a programozóknak módosítaniuk kell egy bizonyos karakterláncot (az inicializálás után), akkor a String osztály helyett a StringBuffer vagy a StringBuilder osztályt kell használniuk. A StringBuffer a JDK 1.0-ban, a StringBuilder osztály pedig a JDK 1.5-ben került bevezetésre, tulajdonképpen a StringBuffer osztály helyettesítéseként (egyszálas környezetekhez).
Mi az a StringBuffer?
A StringBuffer osztályt a JDK 1.0-ban vezették be. A StringBuffer osztály a java.lang csomaghoz tartozik, és az általános java.lang.objecttől öröklődik. A programozók nem bővíthetik tovább, mivel ez egy utolsó osztály. A StringBuffer osztály Serializable, Appendable és CharSequience interfészeket valósít meg. A StringBuffer osztály egyik objektuma változtatható és szálbiztos karaktersorozatot tartalmazhat. Ez azt jelenti, hogy nagyon hasonlít egy String objektumhoz, de a karaktersorozat (hossz és tartalom) a StringBuffer objektum inicializálása után bármikor megváltoztatható. Ezt azonban a StringBuffer osztály által biztosított módszerekkel kell megtenni. A StringBuffer osztályban két alapvető művelet van. Ezeket az append() és insert() metódusok biztosítják. Ezek a metódusok túlterheltek, így bármilyen típusú adat fogadására képesek, például egész és hosszú. Mindkét módszer először bármilyen bemenetet karakterláncsá alakít, majd hozzáadja (hozzáfűzi vagy beszúrja) a megfelelő karakterlánc karaktereit a meglévő Stribbuffer objektumhoz. Az append() metódus hozzáadja a konvertált karakterláncot a meglévő StringBuffer objektum végéhez, míg az insert() metódus hozzáadja a bemeneti karaktereket a megadott beszúrási ponthoz.
Mi az a StringBuilder?
A StringBuilder osztályt a JDK 1.5-ben vezették be. A StringBuilder API nagyon hasonlít a StringBuffer API-hoz. Valójában a StringBuilder osztályt a StringBuffer osztály helyettesítéseként vezették be (egyszálas alkalmazásokhoz). A StringBuilder osztály a java.lang csomaghoz tartozik, és az általános java.lang.objecttől öröklődik. Ez egy utolsó osztály, ezért a programozók nem tudják kiterjeszteni. A StringBuilder osztály Serializable, Appendable és CharSequience interfészeket valósít meg. A StringBuilder osztály egyik objektuma olyan karaktersorozatot tartalmazhat, amely változtatható, de nem szálbiztos. Ez azt jelenti, hogy nagyon hasonlít egy String objektumra, de a karakterlánc bármikor megváltoztatható. A StringBuilder osztály azonban nem biztosít szinkronizálást, ezért azt állítják, hogy gyorsabb, mint a StringBuffer osztály használata. A StringBuilder osztály az append() és insert() metódusokat kínálja, pontosan hasonló funkciókkal, mint a StringBuffer osztályban.
Mi a különbség a StringBuffer és a StringBuilder között?
Bár a StringBuilder és StringBuffer osztályok használhatók változtatható karaktersorozatokhoz Java-ban, van egy lényeges különbség. A StringBuffer osztálytól eltérően a StringBuilder osztály nem szálbiztos, és nem biztosít szinkronizálást. Ezért ajánlatos a StringBuilder osztályt használni a StringBuffer osztály helyett az egyszálas alkalmazásokban, mert azt állítják, hogy a StringBuilder osztály sokkal gyorsabb lesz, mint a StringBuffer osztály (normál körülmények között).