StringBuffer vs StringBuilder
A Java nagyon népszerű objektumorientált nyelv. A Java-ban a String osztály olyan karakterek sorozatának tárolására szolgál, amelyek nem módosíthatók (inicializálva). Alternatív megoldásként a Java programozási nyelv kétféle módosítható karaktersorozatot biztosít. Vagyis amikor a programozóknak módosítaniuk kell egy adott karakterláncot (inicializálás után), akkor a StringBuffer vagy a StringBuilder osztályt kell használniuk a String osztály helyett. A StringBuffer a JDK 1.0-ban, a StringBuilder osztály pedig a JDK 1.5-ben került bevezetésre, valójában a StringBuffer osztály helyettesítésére (egyszálas környezetekhez).
Mi a StringBuffer?
A StringBuffer osztályt a JDK 1.0-ban vezették be. A StringBuffer osztály a java.lang csomagba tartozik, és a generikus java.lang.object-bő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ályba tartozó objektumok mutáns és szálbiztos karaktersorozatot tartalmazhatnak. Ez azt jelenti, hogy nagyon hasonlít egy String objektumhoz, de a karakterek sorrendje (hossza és tartalma) a StringBuffer objektum inicializálása után bármikor megváltoztatható. Ezt azonban a StringBuffer osztály által biztosított specifikus módszerekkel kell elvégezni. A StringBuffer osztályban két alapművelet van. Ezeket az append () és az insert () metódusok biztosítják. Ezek a módszerek túlterheltek,így bármilyen típusú adatot képesek elfogadni, például egész számot és hosszúat. Mindkét módszer először minden bemenetet átalakít egy karakterláncra, 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 az átalakított karakterláncot a meglévő StringBuffer objektum végéhez, míg az insert () metódus hozzáadja a beviteli 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-ra. Valójában a StringBuilder osztályt a StringBuffer osztály helyettesítőjeként vezették be (egyszálas alkalmazásokhoz). A StringBuilder osztály a java.lang csomagba tartozik, és a generikus java.lang.object-ből öröklődik. Ez egy utolsó osztály, ezért a programozók nem tudják kibővíteni. A StringBuilder osztály Serializable, Appendable és CharSequience interfészeket valósít meg. A StringBuilder osztályba tartozó objektumok mutáns, de nem szálbiztos karaktersorozatot tárolhatnak. Ez azt jelenti, hogy nagyon hasonlít egy String objektumhoz, de a karakterlánc bármikor megváltoztatható. De a StringBuilder osztály nem nyújt szinkronizálást, ezért állítólag gyorsabb, mint a StringBuffer osztály használata. A StringBuilder osztály az append () és insert () metódusokat pontosan hasonló funkcionalitással biztosítja, mint a StringBuffer osztályban.
Mi a különbség a StringBuffer és a StringBuilder között?
Habár a StringBuilder és a StringBuffer osztályok használhatók a Java mutatványainak megváltoztatására, kulcsfontosságú különbségük van. A StringBuffer osztálytól eltérően a StringBuilder osztály nem biztonságos a szálak számára, és nem biztosít szinkronizálást. Ezért ajánlott a StringBuilder osztályt használni a StringBuffer osztály helyett egyszálas alkalmazásokban, mert állítólag a StringBuilder osztály sokkal gyorsabb lesz, mint a StringBuffer osztály (normál körülmények között).